BlackPhreaker
Новичок
- Сообщения
- 18
- Репутация
- 0
Как разбить принимаемые данные по количеству знаков ??? Как на картинки :IL_AutoIt_1:
Код:
;#include <Array.au3>
#include <GUIConstants.au3> ; окна
#include <WindowsConstants.au3> ; окна
#include <CommMG.au3> ; ком
;~ Окна и кнопки
$Form1 = GUICreate("Terminal", 395, 600)
;$Label1 = GUICtrlCreateLabel ("$status_string",8, 2, 390, 17)
$Input1 = GUICtrlCreateInput("", 8, 152, 297, 21)
$Button1 = GUICtrlCreateButton("Send", 312, 150, 75, 25, 0)
$Button2 = GUICtrlCreateButton("Clear", 312, 560, 75, 25, 0)
$Edit1 = GUICtrlCreateEdit("", 8, 20, 377, 121, $WS_VSCROLL)
$EditKOD = GUICtrlCreateEdit("", 8, 200, 377, 60, $WS_VSCROLL)
$LabelKOD = GUICtrlCreateLabel ("KOD",8, 180, 390, 17)
$EditKOD2 = GUICtrlCreateEdit("", 8, 290, 377, 60, $WS_VSCROLL)
$LabelKOD2 = GUICtrlCreateLabel ("KOD2",8, 270, 390, 17)
$EditKOD3 = GUICtrlCreateEdit("", 8, 390, 377, 60, $WS_VSCROLL)
$LabelKOD3 = GUICtrlCreateLabel ("KOD3",8, 360, 390, 17)
$EditKOD4 = GUICtrlCreateEdit("", 8, 490, 377, 60, $WS_VSCROLL)
$LabelKOD4 = GUICtrlCreateLabel ("KOD4",8, 460, 390, 17)
GUISetState(@SW_SHOW)
;~ Окна и кнопки
UartSet(7,9600) ; Настройка Uart
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
;If $portstatus = 1 Then
;$status_string = "Закрытие порта: COM"&$port&" ..."
;GUICtrlSetData ($Label1, $status_string)
;sleep(800);пауза, чтоб успели прочитать лейбл
;EndIf
Exit
Case $Button1
$senddata = GUICtrlRead ($Input1); считываем что ввели в Input
If Not $senddata = "" Then; если не пусто, то отправляем порту
_CommSendString($senddata&@CR, 1); в конце нужно добавлять @CR
;_CommSendByte($senddata&@CR, 1); Для бинарных значений 0x40, 0x30, 0x35, 0x41, 0x35, 0x0d
GUICtrlSetData ($Edit1, "Отправлено:"&@CRLF&$senddata&@CRLF,1);пишем в Edit
Else
GUICtrlSetData ($Edit1, "Ошибка: нечего отправлять!"&@CRLF,1)
EndIf
Case $Button2 ; Очистка форм
GUICtrlSetData($Edit1, "")
GUICtrlSetData($EditKOD, "")
GUICtrlSetData($EditKOD2, "")
GUICtrlSetData($EditKOD3, "")
GUICtrlSetData($EditKOD4, "")
EndSwitch
;~ Прием кода
;$Ret_string = _CommGetLine() ;
;$Ret_string = _CommReadByte() ;
;$Ret_string = _CommReadChar() ; !!!
$Ret_string = _CommGetString(); постоянно опрашиваем порт в цикле
sleep(100) ; Задержка чтоб принять код целеком !!!
If Not $Ret_string = "" Then ; если возвращённый результат не пустой
;GUICtrlSetData ($Edit1, "Принято:"&@CRLF&$Ret_string&@CRLF,1); то пишем в Edit
GUICtrlSetData ($Edit1, ""&@CRLF&$Ret_string&@CRLF,1); то пишем в Edit
GUICtrlSetData ($EditKOD, ""&@CRLF&$Ret_string&@CRLF,1); то пишем в Edit
GUICtrlSetData ($EditKOD2, ""&@CRLF&$Ret_string&@CRLF,1); то пишем в Edit
GUICtrlSetData ($EditKOD3, ""&@CRLF&$Ret_string&@CRLF,1); то пишем в Edit
GUICtrlSetData ($EditKOD4, ""&@CRLF&$Ret_string&@CRLF,1); то пишем в Edit
$Ret_string = "";обнуляем переменную
EndIf
WEnd
Func UartSet($port,$baud)
If $baud = "" Then $baud = 9600
Local $sportSetError
ConsoleWrite(_CommListPorts(0))
_CommSetPort($port, $sportSetError, 9600, 8, "none",2,1)
if $sportSetError = '' Then
Return 1
ConsoleWrite("using " & _CommGetVersion(1))
Else
ConsoleWrite("error")
return $sportSetError
EndIf
EndFunc
Func OnAutoItExit(); функция срабатывает при выходе.
_CommClosePort()
EndFunc