отвечаю сам себе
oldbay писал(а): из чего делаю вывод что я точно не словил таймауты на протоколе.
вывод был неверен.
Проблема была именно на протоколе - именно при использовании udb кабеля:
*когда ПРИМ 08ТК был настроен на скорость порта 9600(конечно с указанием этой же скорости в настройках драйвера) - он обсолютно нормально работает на стандартном rs262 порту, но отказывается работать через виртуальный компорт ttyUSB0 создаваемый через pl2303
*если в настройках ПРИМ 08ТК указать скорость порта 115200(с указанием этой же скорости в настройках драйвера) - то протокол нормально отрабатывает на обоих способах подключения.
Скорость самого, и реального ttyS0 и виртуального созданного на usb bus ttyUSB0, в обоих случаях устанавливается правильная(по скорости порта фискалки 9600 и 115200 соответственно) проверялось командой stty
на скорости порта фикальника(с указанием соответсвующей скорости)
Зависимость проблемы от реализации протокола выяснилась анализом вашего дампа из консоли:
чем выше была скорость на порту фискальника - тем больше я получал в строке значений в "bytes from FR:"
как пример вот что получалось на скорости 9600 на usb кабеле
- Код: Выделить всё
--------KKMDRV--------GetStatus(void)
11-Apr-2012-02:23:51 connect()
11-Apr-2012-02:23:51 GetDeviceMetrics(void)
11-Apr-2012-02:23:51 demoflag = true
11-Apr-2012-02:23:51 connect finished
11-Apr-2012-02:23:51 PrimReadParamDocument()
11-Apr-2012-02:23:51 REQUEST TO FR:
2|41|45|52|46|3D|34|44|1C|3|46|34|30|31|
11-Apr-2012-02:23:51 int KKM_PRIM::read_answer(void)
11-Apr-2012-02:23:52 bytes from FR:
2|
11-Apr-2012-02:23:52 bytes from FR:
3D|
11-Apr-2012-02:23:52 bytes from FR:
34|
11-Apr-2012-02:23:52 bytes from FR:
44|
11-Apr-2012-02:23:52 bytes from FR:
1C|
11-Apr-2012-02:23:52 bytes from FR:
38|
11-Apr-2012-02:23:52 bytes from FR:
38|
11-Apr-2012-02:23:52 bytes from FR:
1C|
11-Apr-2012-02:23:52 bytes from FR:
30|
.......
и т.д.
при скорости 19200
- Код: Выделить всё
--------KKMDRV--------GetStatus(void)
12-Apr-2012-14:17:54 connect()
12-Apr-2012-14:17:54 GetDeviceMetrics(void)
12-Apr-2012-14:17:54 demoflag = true
12-Apr-2012-14:17:54 connect finished
12-Apr-2012-14:17:54 PrimReadParamDocument()
12-Apr-2012-14:17:54 REQUEST TO FR:
2|41|45|52|46|3D|34|44|1C|3|46|34|30|31|
12-Apr-2012-14:17:54 int KKM_PRIM::read_answer(void)
12-Apr-2012-14:17:54 bytes from FR:
2|
12-Apr-2012-14:17:54 bytes from FR:
3D|
12-Apr-2012-14:17:54 bytes from FR:
34|44|
12-Apr-2012-14:17:54 bytes from FR:
1C|38|
12-Apr-2012-14:17:54 bytes from FR:
30|1C|
12-Apr-2012-14:17:54 bytes from FR:
30|30|
12-Apr-2012-14:17:54 bytes from FR:
30|39|
12-Apr-2012-14:17:54 bytes from FR:
.......
и т.д.
при скорости 115200
- Код: Выделить всё
--------KKMDRV--------GetStatus(void)
12-Apr-2012-14:21:43 connect()
12-Apr-2012-14:21:43 GetDeviceMetrics(void)
12-Apr-2012-14:21:43 demoflag = true
12-Apr-2012-14:21:43 connect finished
12-Apr-2012-14:21:43 PrimReadParamDocument()
12-Apr-2012-14:21:43 REQUEST TO FR:
2|41|45|52|46|3D|34|44|1C|3|46|34|30|31|
12-Apr-2012-14:21:43 int KKM_PRIM::read_answer(void)
12-Apr-2012-14:21:43 bytes from FR:
2|
12-Apr-2012-14:21:43 bytes from FR:
3D|34|44|1C|38|30|1C|30|
12-Apr-2012-14:21:43 bytes from FR:
30|30|
12-Apr-2012-14:21:43 bytes from FR:
39|1C|30|30|30|30|1C|31|
12-Apr-2012-14:21:43 bytes from FR:
36|31|32|
12-Apr-2012-14:21:43 bytes from FR:
31|32|31|32|31|41|1C|41|
12-Apr-2012-14:21:43 bytes from FR:
33|30|30|
.......
и т.д.
проверка связи срабатывает(довольно долго) только на скорости 19200, работа происходит только с кучей ошибок
нормальная работа устанавливается только на скорости порта 115200
п.с:
Вот такая статистика
п.с:
Ситуация достаточно сильно не радует тем что на предприятии кроме "примов" есть старые STAR SP2000(тоже работающие на протоколе от ПРИМ-а), так эту каку нельзя перевести на скорость порта 115200 - только максимально 38400 (можно и 57600 - но на этой скорости фискальник аппаратно глючит

).
Конечно я могу для них найти несколько машин с com портами(убрать с usb-кабелей) ... но это както не похоже на выход из положения.