Мурик писал(а):
Видимо процедуре OW_ReadROM в первом аргументе было передано число 0, вместо указателя на структуру OW_Buff. На скриншоте этот участок кода не виден.
Кода здесь - кот наплакал:
Код:
XIncludeFile "OWire_Module.pbi"
UseModule OWire
Procedure Select_ComPort()
Port.s = GetGadgetText(3)
If IsSerialPort(4) ; Если с таким ИД порт уже открыт,
OW_ClosePort(4) ; то закрываем его и
SetGadgetColor(1,#PB_Gadget_BackColor, $0000FF);зажигаем красный свет
SetGadgetText(2,"Открыть порт")
Else
OW_OpenPort(Port, 4); открываем порт.
If IsSerialPort(4); Если порт открыт, то
SetGadgetColor(1,#PB_Gadget_BackColor, $00FF00); зажигаем зелёный свет
SetGadgetText(2,"Закрыть порт")
Else
SetGadgetColor(1,#PB_Gadget_BackColor, $0000FF);
MessageRequester("Ошибка","Выбранный порт недоступен, выберите другой порт.",#PB_MessageRequester_Ok)
EndIf
EndIf
EndProcedure
Procedure DS_Number()
Protected Text.s, Dim Input_Byte.a(8)
OW_ReadROM(*Input_Byte, 4)
SetGadgetText(6,Text) ;здесь покажем номер
EndProcedure
If OpenWindow(0, 0, 0, 250, 150, "Тестер DS", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(1, 110, 30, 20, 20, ""); Индикатор
SetGadgetColor(1,#PB_Gadget_BackColor, $0000FF)
ButtonGadget(2, 130, 30, 100, 20, "Открыть порт")
ComboBoxGadget(3, 20, 30, 90, 20)
For i=1 To 16
AddGadgetItem(3,-1,"COM" + Str(i))
Next i
SetGadgetState(3,0)
ButtonGadget(5, 20, 90, 100, 20, "Номер ")
TextGadget(6, 130, 93, 120, 20, ""); Номер
Repeat
Event = WaitWindowEvent()
If Event=#PB_Event_Gadget
Gadget = EventGadget ( ) ;узнаём,какой гаджет был активирован
If Gadget = 2; нажата кнопка "Открыть порт"
Select_ComPort()
EndIf
If Gadget = 5; нажата кнопка "Номер"
DS_Number()
EndIf
EndIf
Until Event=#PB_Event_CloseWindow
EndIf
End
ПодскажИте, пожалуйста, что я не доделал, чтобы получить принятые байты? В текст я их сам преобразую, этого в коде нет.