Aktuelle Zeit: 30.10.2020 18:25

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2008 22:06 
Offline

Registriert: 03.02.2008 21:24
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 05.09.2008 08:41 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
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.

_________________
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 05.09.2008 16:00 
Offline
Benutzeravatar

Registriert: 23.12.2005 15:00
Wohnort: Alling (bei FFB)
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 ;)

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye