Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу принять данные с COMport

77K
11 января 2012 года
Lepton
3 / / 11.01.2012
Пишу прогу для приема данных от внешнего устройства через COMport. Данные должны быть записаны в файл. Порт открываю, а данные принять не могу ((. Помогите:confused:
277
11 января 2012 года
arrjj
1.7K / / 26.01.2011
А кто в порт то пишет? Да и вообще код какойто странный (в плане логики и порядка выполнения) :)
77K
11 января 2012 года
Lepton
3 / / 11.01.2012
А что именно странно?
277
11 января 2012 года
arrjj
1.7K / / 26.01.2011
В ReadPrinting(); ты записываешь stdin в буфер, который в данный момент вполне может использоваться com-портом (bufrd),
даже:
изначальная логика программы - она не дожидается твоих действий. И вполне может вываливаться с ошибкой - создали поток, он ждет данных, counter=0 (если повезет) ReadPrinting не совершив не одного цикла закроется, программа завершится.
20K
12 января 2012 года
sem2711
124 / / 23.09.2009
После устранения логических ошибок, на которые указал arrjj, удалось принять данные?

Если нет, то попробуйте отключить DTR Control в настройках порта.

Если не помогло, то попробуйте поэкспериментировать с таймаутами: устройство, подключенное к порту может не успевать отправить полный кадр за отведенное время. Используйте такой шаблон:
 
Код:
cto.ReadIntervalTimeout = MAXDWORD;
        cto.ReadTotalTimeoutMultiplier = MAXDWORD;
        cto.ReadTotalTimeoutConstant = READ_TIMEOUT_VALUE;
        cto.WriteTotalTimeoutMultiplier = MAXDWORD;
        cto.WriteTotalTimeoutConstant = WRITE_TIMEOUT_VALUE;

Это из рабочего проекта: READ_TIMEOUT_VALUE и WRITE_TIMEOUT_VALUE, как вы поняли, подлежат изменению. Начните с больших значений: 500 ms, например.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог