Прошу помочь решить небольшую проблему (или большую). Мне поручили написать программу получения данных с внешнего оборудования через СОМ порт. Особенность состоит в том, что передача начинается по нажатию кнопки на внешнем устройстве. Передача ведется сразу, без всяких опросов о готовности и пр. Данные передаются одним блоком в 32К (32768 байт), а буфер СОМ порта может быть размером только 32767 байт, по этому последний байт теряется. Я сначала запускаю цикл опроса порта, а потом нажимаю на устройстве кнопку передачи.
Dim Buffer As String
Do
DoEvents
Buffer = Buffer & MSComm1.Input
Loop Until Len(Buffer) = 32768
По идее, буфер порта должен непрерывно очищаться, а в переменной Buffer должна накапливаться передаваемая информация. Но как только начинается передача, программа впадает в ступор и не выходит из него, пока не будет передана вся информация. В переменной Buffer оказывается столько информации, каков размер буфера СОМ порта, остальная информация теряется. Причем эта ситуация возникает на всех компьютерах, кроме моего (у меня прием идет по частям). попытка использовать свойства
MSComm1.Break = True
MSComm1.RThreshold = 1 или 100
ни к чему не привели. В чем может быть дело? Программировал на VB6 с установленным SP6. OC Windows 98SE. На других машинах: Windows 95, Windows 98SE, Windows ME. Установки параметров портов везде одинаковые - число бит, скорость, контроль, стоповые биты, управление потоком.