Здравствуйте, прошу помощи. Программированием для ПК только пытаюсь изучить, помогите пожалуйста разобраться с приём по 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