PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Прием данных в HEX формате


Прием данных в HEX формате

Сообщений 1 страница 3 из 3

1

Доброго времени суток.

Просьба объяснить как принять данные на PureBasic в HEX формате в массив

Контроллер шлет данные по:

01 01 01 01 01 01 01 01 01 01 01 01 80 80 80 80

Нужно постоянно принимать в промежутке 100 милисекунд

Как это реализовать при помощи ReadSerialPortData(#SerialPort, *Buffer, Length) ?

0

2

Нашел вот такой код

Код:
#ComPort = 0 ; Идентификатор COM порта
 
EnableExplicit

 
Procedure InComStr() ; Прием строк из COM порта.
  Static InBuff.s
  Protected Bytes, Buff.a, i
  
  Bytes = AvailableSerialPortInput(#ComPort)
  If Bytes>0
    For i=1 To Bytes
      If ReadSerialPortData(#ComPort, @Buff, 1)=1
        If Buff<>#CR And Buff<>#LF
          InBuff+Chr(Buff)
              
              Debug Buff
          
        Else
          Debug InBuff
          InBuff=""
        EndIf
      EndIf
    Next i
  EndIf
  
EndProcedure
 
If OpenSerialPort(#ComPort, "COM3", 4800, #PB_SerialPort_NoParity, 8, 1,
                  #PB_SerialPort_NoHandshake, 255, 255)
  
  Repeat
    InComStr()
    Delay(500)
  ForEver
  
  
  CloseSerialPort(#ComPort)
Else
  Debug "Не удалось открыть COM порт"
EndIf

Вроде бы работает как надо

Если посмотреть Debug Buff

В окне Дебагера выводит все по порядку в таком формате

1
1
1
1
1
1
1
1
1
1
1
1
128
128
128
128

Как теперь все это организовать в массив?

Например

num(0)=1
num(1)=1
num(2)=1
...
...
...
num(16)=128

0

3

Код:
Procedure InComStr() ; Прием строк из COM порта.
  Static InBuff.s
  Protected Bytes, Buff.a, i
  
  Bytes = AvailableSerialPortInput(#ComPort)
  If Bytes>0
    
    Protected Dim Arr.a(Bytes)
    
    For i=1 To Bytes
      If ReadSerialPortData(#ComPort, @Buff, 1)=1
        Arr.a(i)=Buff
        
        If Buff<>#CR And Buff<>#LF
          InBuff+Chr(Buff)
              Debug Buff
        Else
          Debug InBuff
          InBuff=""
        EndIf
      EndIf
    Next i
  EndIf
  
EndProcedure

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Прием данных в HEX формате