Здравствуйте, прошу помощи. Программированием для ПК только пытаюсь изучить, помогите пожалуйста разобраться с приём по Com порту. Устройство отдаёт данные пакетами, в начале пакета h02 + 10 байт данных в ascii и завершение приёма h03. С открытием и настройкой порта понятно. Таким способом я ловлю всё что идёт в порт, а мне нужно собрать строку от начала пакета h02 и до конца h03 и выводить значение в текст гаджет. Спасибо.
#Com_Port=3
If IsSerialPort (#Com_port)
CloseSerialPort (#Com_port)
EndIf
If OpenSerialPort(#Com_port, "COM3", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Debug "Порт открыт успешно"
Else
Debug "Порт не обнаружен"
EndIf
Procedure InData() ; Прием данных.
Protected InBytes
If IsSerialPort(#COM_Port) ; С таким ИД порт открыт.
InBytes = AvailableSerialPortInput(#COM_Port)
Protected Dim InBuffer.a(InBytes), RealInBytes
RealInBytes = ReadSerialPortData(#COM_Port, @InBuffer(), InBytes)
AddGadgetItem(3, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))
EndIf
EndProcedure
Procedure ComOut (Sent_data.s)
If IsSerialPort(#Com_port)
WriteSerialPortData(#Com_Port,@Sent_data,1)
Else
Debug "Куда данные посылать?"
EndIf
EndProcedure
OpenWindow(0,0,0,700,500,"Тестовая программа",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered); открываем окно
EditorGadget(3, 50, 160, 330, 150);
Repeat
Event=WaitWindowEvent() ; Получаем идентификатор события.
Gadget=EventGadget() ; Узнаём идентификатор активного гаджета.
InData()
Until Event = #PB_Event_CloseWindow ; Прерываем цикл при закрытии окна
End