Wenn ich mit Purebasic Daten sende zum AVR-Board (2-Draht Rx und TX), muss ich zusätzlich einmal Masse legen vom Notebook(Blechhülle vom USB-Stecker) zum AVR-Board, sonst kommen keine Daten an.
Wenn ich dieses mal probehalber mit GFA32 mache, über den gleichen USB-Port, geht es ohne Masse.
Kann man in Purebasic irgendwie evtl ein seriellen Pin softwaremässig beeinflussen?
Code: Alles auswählen
Global text1.s,port.l,s_byte.c
Enumeration
#Window_0
#Button_0
#Button_1
#Button_2
#String_0
#Editor_0
EndEnumeration
InitSprite()
InitSound()
OpenWindow(#Window_0, 400, 150, 800,500, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
OpenWindowedScreen(WindowID(#Window_0),300,10,300,300,0,0,0)
ButtonGadget(#Button_0, 10,10, 80, 25, "Seriell ein")
ButtonGadget(#Button_1, 10,40, 80, 25, "Seriell aus")
ButtonGadget(#Button_2, 10,70, 80, 25, "Daten")
StringGadget(#String_0, 100, 10, 100, 22, "")
EditorGadget(#Editor_0, 10, 140, 200,200)
ClearScreen(RGB(128,128,128))
port=-1
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_0
If port=-1
port=OpenSerialPort(#PB_Any, "COM4", 19200, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
If port
text1+"...geöffnet "+Str(port)+Chr(10)
SetGadgetText(#Editor_0, text1)
Else
text1+"...nichts"+Chr(10)
SetGadgetText(#Editor_0, text1)
port=-1
EndIf
EndIf
EndIf
If EventGadget = #Button_1
If port > 0
CloseSerialPort(port)
text1+"...geschlossen"+Chr(10)
SetGadgetText(#Editor_0, text1)
port=-1
EndIf
EndIf
If EventGadget = #Button_2
If port > 0
While AvailableSerialPortInput(port)
ReadSerialPortData(port, @s_byte, 1)
text1+Str(s_byte)+Chr(10)
SetGadgetText(#Editor_0, text1)
Wend
EndIf
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
FlipBuffers()
ForEver