PureBoard
http://forums.purebasic.com/german/

PIC controller: senden und empfangen per RS232
http://forums.purebasic.com/german/viewtopic.php?f=17&t=17617
Seite 1 von 1

Autor:  thomas223 [ 04.09.2008 22:06 ]
Betreff des Beitrags: 

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?

Autor:  DarkDragon [ 05.09.2008 08:41 ]
Betreff des Beitrags: 

Das hier sollte funktionieren:

Code:
; Ö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


Ansonsten kannst du ja noch selbst in der Hilfe (Taste F1 im PureBasic Editor) unter "Serial Port" nachschauen.

Autor:  Macros [ 05.09.2008 16:00 ]
Betreff des Beitrags: 

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.

Code:
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


Ein paar Hinweise:
  • 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 ;)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/