Jump to content
Форум по продукции MOXA

Recommended Posts

Добрый день!

 

Итак, имеется в наличии старенькое устройство, которое использует 9 бит для обозначения начала кадра.

Также имеется Moxa 8410, связь держим по RS-485.

 

Поскольку напрямую управлять битом четности не получается, я использую функцию SetSerialParams (по памяти, в ней выставляется четность, кол-во бит данных и стоповых бит) из библиотеки, которая шла на CD. Чтобы выставить бит, включаю режим четности MARK (всегда 1), когда надо убрать - SPACE. Ну и при отправке кадра ставлю MARK, отправляю первый байт, проверяю, что выходная очередь пуста, ставлю SPACE и шлю остатки.

 

Тут кроется проблема номер один. Не смотря на то, что очередь пуста (функция проверки возвращает ноль), если изменить режим 9 бита и сразу начать передачу, то протокол не срастается - пришлось поставить задержку usleep(1). Теперь все работает, но есть проблема номер два - судя по показаниям сниффера ports из примеров (с диска), задержка получается не 1 мкс, а 10мс. Осцилограф пока не подключал, так что возможно, это не ошибка usleep, а ошибка таймера, показания которого берет ports.

 

С отправкой разобрался, стал разбираться с приемом данных и понял, что узнать, какое значение 9 бита у принятого байта не представляется возможным.

Описанные в интернетах флаг termios PARMRK не работает, т.е. все байты 0xff префиксуются 0xff (вместо одного пришедшего физически я считываю два одинаковых), а вот байты с неправильным (относительно заданного режима порты) битом четности никак не отмечаются.

 

Подскажите пожалуйста, как мне отловить этот 9 бит на приеме?

 

Заранее спасибо!

Link to comment

Добрый день,

Попробуем подумать с программистами, как проще сэмулировать 9-битную посылку.

Для конкретики - могли бы скинуть кусочки кода, которыми передаете и принимаете данные?

Link to comment

Добрый день,

Попробуем подумать с программистами, как проще сэмулировать 9-битную посылку.

Для конкретики - могли бы скинуть кусочки кода, которыми передаете и принимаете данные?

 

Добрый день!

Сейчас в личку зашлю.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...