Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2014, 10:24   #1
djeki7
 
Регистрация: 14.06.2014
Сообщений: 7
По умолчанию Serial port 9bit ?

В общем суть проблемы такова для связи пк с несколькими микроконтроллерами по USART мне необходимо чтобы в одной посылке через СОМ порт было 9 бит (8 бит данных + 9 бит признак адреса) но в свойстве класса serialPort.DataBits значение может быть в пределах 5-8...

Может у кого-то есть куски кода для работы с СОМ портом без использования стандартной библиотеки классов?
djeki7 вне форума Ответить с цитированием
Старый 11.08.2014, 12:14   #2
cerkonst
Пользователь
 
Аватар для cerkonst
 
Регистрация: 18.01.2011
Сообщений: 19
По умолчанию

Операционная система вам не позволит работать с 9 бит из под любых класов, правда можно написать свой драйвер COM порта, я конечно могу ошибаться но написание нового драйвера под 9 бит повлечет очень много проблем. У меня есть 5 летний опыт в работе с serialPort. Были сложные проекты где передовались большие объемы данных в том числе и 16-ти разрядные числа. Поэтому предлагаю разбить 9 бит на 8 и 1, а в контроллере просто их объеденить, мне кажется что это будет проще всего. Если не понятно как это сделать пишите.
А по поводу 9 бит почитайте этот пост http://social.msdn.microsoft.com/For...out-9bit-rs232
___________________________________ _________
Самые гениальные идеи - самые простые.
Помог с ответом нажми на весы.

Последний раз редактировалось cerkonst; 11.08.2014 в 12:20.
cerkonst вне форума Ответить с цитированием
Старый 11.08.2014, 12:34   #3
djeki7
 
Регистрация: 14.06.2014
Сообщений: 7
По умолчанию

мда теперь все встало на свои места, спасибо ....... а можно по подробнее как разбить 9 бит на 8 и 1 ведь там еще есть стартовые и стоповые биты,........ если мне нужно для каждого устройства отправлять две посылки по 9 байт первая с адресом устройства(9 бит равен 1) а вторая с командой(9 бит равен 0) ...... к примеру я могу поставить промежуточный контролер который будет собирать из четырех 8 битных посылок в две 9 битных но как мне отделить посылки с адресами от посылок с командами....... посылки должны идти непрерывным потоком
djeki7 вне форума Ответить с цитированием
Старый 11.08.2014, 12:44   #4
cerkonst
Пользователь
 
Аватар для cerkonst
 
Регистрация: 18.01.2011
Сообщений: 19
По умолчанию

Для вашего случая предлагаю отправлять данные в типе String и по правилам после отправки слова нужно отправить байт "0x0D". Контроллер принимает последовательно байты и как только встретит байт "0x0D" то понимает что строка закончилась. А в строке вы можете сколько угодно закодировать байт и отправка будет одна команда строка и втрорая байт "0x0D".
___________________________________ _________
Самые гениальные идеи - самые простые.
Помог с ответом нажми на весы.
cerkonst вне форума Ответить с цитированием
Старый 11.08.2014, 13:16   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от cerkonst Посмотреть сообщение
Для вашего случая предлагаю отправлять данные в типе String и по правилам после отправки слова нужно отправить байт "0x0D". Контроллер принимает последовательно байты и как только встретит байт "0x0D" то понимает что строка закончилась. А в строке вы можете сколько угодно закодировать байт и отправка будет одна команда строка и втрорая байт "0x0D".
по каким таким правилам?
учитывая что вы не работаете с интерфейсом напрямую.

есть как таковое два варианта, первый это вернутся к API вызовам напрямую.
второе это попробовать заюзать бит четности как-нить(но не уверен что выйдет)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.08.2014, 14:50   #6
cerkonst
Пользователь
 
Аватар для cerkonst
 
Регистрация: 18.01.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
по каким таким правилам?
По всемирно принятым, во всех программах, взять те же G-коды, окончанием комманды считается байт 0x0d.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
есть как таковое два варианта, первый это вернутся к API вызовам напрямую.
второе это попробовать заюзать бит четности как-нить(но не уверен что выйдет)
1. Api функции дело хорошое, для прямых рук.
2. Бит четности не является дополнительной информацией при передачи данных, это всего лишь настройка порта.
___________________________________ _________
Самые гениальные идеи - самые простые.
Помог с ответом нажми на весы.
cerkonst вне форума Ответить с цитированием
Старый 11.08.2014, 17:19   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
По всемирно принятым, во всех программах, взять те же G-коды, окончанием комманды считается байт 0x0d.
это только G-коды.
CashCode.NET протокол купюроприемников такого не знает.
протокол фискальных принтеров АТОЛ тоже не имеет такого.
Цитата:
1. Api функции дело хорошое, для прямых рук.
2. Бит четности не является дополнительной информацией при передачи данных, это всего лишь настройка порта.
но вариант, причем позволяющий передать именно 9 бит за посылку, как нужно, а не менять протокол, что порою вообще не возможно.
бит четности тоже передается.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Serial в Delphi 7 Golden_RUS Общие вопросы Delphi 4 21.03.2013 08:51
c# serial port Mihhhhh Помощь студентам 0 15.05.2012 18:50
Работа с serial портом kolchan Общие вопросы Delphi 1 19.12.2011 20:09
Serial, centOS. gcc alter_man C/C++ Сетевое программирование 1 28.06.2011 01:48
Serial Key L.Morgan Общие вопросы Delphi 8 14.04.2009 18:05