Не могу принять данные с COMport
Пишу прогу для приема данных от внешнего устройства через COMport. Данные должны быть записаны в файл. Порт открываю, а данные принять не могу ((. Помогите:confused:
А кто в порт то пишет? Да и вообще код какойто странный (в плане логики и порядка выполнения) :)
А что именно странно?
даже:
изначальная логика программы - она не дожидается твоих действий. И вполне может вываливаться с ошибкой - создали поток, он ждет данных, counter=0 (если повезет) ReadPrinting не совершив не одного цикла закроется, программа завершится.
Если нет, то попробуйте отключить DTR Control в настройках порта.
Если не помогло, то попробуйте поэкспериментировать с таймаутами: устройство, подключенное к порту может не успевать отправить полный кадр за отведенное время. Используйте такой шаблон:
Код:
cto.ReadIntervalTimeout = MAXDWORD;
cto.ReadTotalTimeoutMultiplier = MAXDWORD;
cto.ReadTotalTimeoutConstant = READ_TIMEOUT_VALUE;
cto.WriteTotalTimeoutMultiplier = MAXDWORD;
cto.WriteTotalTimeoutConstant = WRITE_TIMEOUT_VALUE;
cto.ReadTotalTimeoutMultiplier = MAXDWORD;
cto.ReadTotalTimeoutConstant = READ_TIMEOUT_VALUE;
cto.WriteTotalTimeoutMultiplier = MAXDWORD;
cto.WriteTotalTimeoutConstant = WRITE_TIMEOUT_VALUE;
Это из рабочего проекта: READ_TIMEOUT_VALUE и WRITE_TIMEOUT_VALUE, как вы поняли, подлежат изменению. Начните с больших значений: 500 ms, например.