8.х ОБМЕН Как записать в com-порт символы

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем krasdok, 6 июн 2013.

  1. TopicStarter Overlay
    krasdok
    Offline

    krasdok Опытный в 1С

    Регистрация:
    22 июн 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Нужна помощь...
    Есть внешняя компанента для работы с com портом.
    Нужно записать следующие символы: A7 00
    Делаю так rs232.ЗаписатьВПорт=Симв(167)+Симв(0)
    С помощью Portmon сканирую. Записывается только A7
    вот лог:
    0 0.00004425 1cv7s.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open
    1 0.00000117 1cv7s.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
    2 0.00000064 1cv7s.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
    3 0.00000032 1cv7s.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
    4 0.00000042 1cv7s.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
    5 0.00000035 1cv7s.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
    6 0.00000032 1cv7s.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
    7 0.00000031 1cv7s.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
    8 0.00000032 1cv7s.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
    9 0.00000732 1cv7s.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 9600
    10 0.00000297 1cv7s.exe IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS
    11 0.00000312 1cv7s.exe IOCTL_SERIAL_CLR_DTR Serial0 SUCCESS
    12 0.00000179 1cv7s.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
    13 0.00000055 1cv7s.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
    14 0.00000183 1cv7s.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:0 XonLimit:2048 XoffLimit:512
    15 0.00000042 1cv7s.exe IOCTL_SERIAL_GET_TIMEOUTS Serial0 SUCCESS
    16 0.00000043 1cv7s.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:1 RM:1 RC:10 WM:0 WC:0
    17 0.10985979 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    18 0.11033986 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    19 0.11034077 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    20 0.11034279 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    21 0.11032482 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    22 0.11034158 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    23 0.11034126 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    24 0.11034088 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    25 0.11033940 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    26 0.00001846 1cv7s.exe IRP_MJ_WRITE Serial0 SUCCESS Length 2: A7 0D
    27 0.11033860 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    28 0.11034443 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Сам с этим практически не работал, поэтому конкретно ничего не скажу
    У вас там логи от v77 насколько вижу, вы веткой не ошиблись? В какой программе работаете? это раздел по 8-ке

    Смотрите - насколько вижу у вас приходит 2 байта, но второй почему-то символ возврата каретки. Такой вопрос - эта компонента точно нормально обрабатывает символ nul (00) может в компоненте ошибка? В качестве эксперимента - если попробовать послать другие символы из диапазона ASCII - все приходят верно?
  3. TopicStarter Overlay
    krasdok
    Offline

    krasdok Опытный в 1С

    Регистрация:
    22 июн 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Делаю так rs232.ЗаписатьВПорт=Симв(167)+Симв(1)
    символ воз.каретки прицепом идет так в компоненте
    0 вообще игнорируется


    0 0.00004457 1cv7s.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open
    1 0.00000124 1cv7s.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
    2 0.00000065 1cv7s.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
    3 0.00000033 1cv7s.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
    4 0.00000044 1cv7s.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
    5 0.00000037 1cv7s.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
    6 0.00000032 1cv7s.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
    7 0.00000032 1cv7s.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
    8 0.00000032 1cv7s.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
    9 0.00000730 1cv7s.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 9600
    10 0.00000301 1cv7s.exe IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS
    11 0.00000315 1cv7s.exe IOCTL_SERIAL_CLR_DTR Serial0 SUCCESS
    12 0.00000189 1cv7s.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
    13 0.00000059 1cv7s.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
    14 0.00000177 1cv7s.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:0 XonLimit:2048 XoffLimit:512
    15 0.00000044 1cv7s.exe IOCTL_SERIAL_GET_TIMEOUTS Serial0 SUCCESS
    16 0.00000039 1cv7s.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:1 RM:1 RC:10 WM:0 WC:0
    17 0.10977134 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    18 0.11034181 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    19 0.11033947 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    20 0.11033811 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    21 0.11034202 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    22 0.11033885 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    23 0.11034039 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    24 0.11034025 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    25 0.11034123 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    26 0.11033929 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    27 0.11034068 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    28 0.00002640 1cv7s.exe IRP_MJ_WRITE Serial0 SUCCESS Length 3: A7 01 0D
    29 0.11034153 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    30 0.11034058 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    31 0.11034628 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    32 0.11034098 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
    33 0.11034021 1cv7s.exe IRP_MJ_READ Serial0 TIMEOUT Length 0:
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    А например так - что будет на выходе:
    Симв(167) + Симв(0) + Симв(167)
  5. TopicStarter Overlay
    krasdok
    Offline

    krasdok Опытный в 1С

    Регистрация:
    22 июн 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    То что в DLL дело, это я уже понял. Символ перевода коретки убрал, он не нужен, а вот с записью "0" пока не разобрался.
    Пусто ничего не пишет. Если отправить 167+0+167 Вот что получается:
    0 0.00002554 1cv7s.exe IRP_MJ_WRITE Serial0 SUCCESS Length 2: A7 A7
    Как будто пропускает
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не знаю чем помочь. 00 - символ окончания строки в c++. Вероятно особая обработка даного символа происходит. Т.е. если нет исходников внешней компоненты, то поправить мне кажется не получится. Ну или связаться с автором ВК.
  7. TopicStarter Overlay
    krasdok
    Offline

    krasdok Опытный в 1С

    Регистрация:
    22 июн 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Исходник на Delphi есть. Разбираюсь с компонентой. Если можете помочь то исходник могу скинуть?
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Я на дэлфи уже очень давно не пишу. Модуль большой? Киньте сюда, может кто глянет.

Поделиться этой страницей