Hallo ich habe da eine noch etwas ähnliche frage ich habe einen PIC controller dieser schickt mir alles was ich ihm über RS232 sende wider zurück. das funzt mit einem terminal prog schon ganz gut nun würde ich gern so ein terminal selber schreiben um ein eistig in Basic zu findenaber die meisten beisiele hier sind noch in v3.xx und leider nicht in 4.2 und die hilfe brinkt mich nicht weiter!
wie kann ich senden und empfangen in 4.2?
PIC controller: senden und empfangen per RS232
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Das hier sollte funktionieren:
Ansonsten kannst du ja noch selbst in der Hilfe (Taste F1 im PureBasic Editor) unter "Serial Port" nachschauen.
Code: Alles auswählen
; Öffne COM1 im 8N1 Modus mit der Baudrate 9600
If OpenSerialPort(0, "COM1", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 256, 256)
; Schreibe "Hallo, Welt!"
WriteSerialPortString(0, "Hallo, Welt!")
; Warte auf Datensatz
While AvailableSerialPortInput(0) = 0
Delay(10)
Wend
Delay(10)
; Lese Datensatz und gib ihn aus
Text.s = Space(AvailableSerialPortInput(0))
ReadSerialPortData(0, @Text, AvailableSerialPortInput(0))
Debug Text
CloseSerialPort(0)
Else
Debug "ERROR - Couldn't open COM1"
EndIf
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Ich arbeite gerade in einer Firma an genau dem Problem,
eine Konsolenoberfläche für RS232 mit eier Gui zu ersetzen.
Dabei habe ich mir erstmal selbst ein Terminal geschrieben,
um die Funktionen auszutesten.
Ein paar Hinweise:
eine Konsolenoberfläche für RS232 mit eier Gui zu ersetzen.
Dabei habe ich mir erstmal selbst ein Terminal geschrieben,
um die Funktionen auszutesten.
Code: Alles auswählen
baud=115200
OpenSerialPort(1,"COM1",baud,#PB_SerialPort_EvenParity,8,1,#PB_SerialPort_NoHandshake,1024,1024)
OpenWindow(1,0,0,500,500,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
StringGadget(1,5,5,50,25,"")
ButtonGadget(0,60,5,40,25,"send")
ButtonGadget(3,110,5,40,25,"clear")
TextGadget(99,200,5,100,15,"")
EditorGadget(2,5,40,490,400,#PB_Editor_ReadOnly)
Repeat
event=WaitWindowEvent(20)
Select event
Case #PB_Event_CloseWindow
CloseSerialPort(1)
Case #PB_Event_Gadget
SetGadgetText(99,Str(AvailableSerialPortOutput(1)))
Select EventGadget()
Case 0
a$=GetGadgetText(1)
If Len(a$)=1
WriteSerialPortData(1,@a$,1)
text$=GetGadgetText(2)+a$
Else
a$=Chr(Val(a$))
WriteSerialPortData(1,@a$,1)
text$=GetGadgetText(2)+"ASCII: "+Str(Asc(a$))
EndIf
SetGadgetText(2,text$+Chr(10))
SetGadgetText(1,"")
SetActiveGadget(1)
Case 3
SetGadgetText(2,"")
EndSelect
EndSelect
If IsSerialPort(1)
input=AvailableSerialPortInput(1)
If input
a$=Space(input)
ReadSerialPortData(1,@a$,input)
text$=GetGadgetText(2)+a$
SetGadgetText(2,text$)
EndIf
EndIf
Until event=#PB_Event_CloseWindow
- Scrolling ist noch nicht drinnen
- Das Programm sendet immer nur Einzelzeichen.
(Da in meinem Fall nur diese gebraucht werden,
zwei oder mehr Buchstaben stehen für einen ASCII Code) - Die Daten der Com Verbindung musst du natürlich anpassen.
- Ich hab das Programm jetzt nicht nochmal angeschaut
kann also komische Variablen usw enthalten