WriteSerialPortData

Anfängerfragen zum Programmieren mit PureBasic.
thomas223
Beiträge: 8
Registriert: 03.02.2008 21:24

WriteSerialPortData

Beitrag von thomas223 »

Hallo erst einmal!

Ich versuche jetzt schon seit einer weile den Com port über PureBasic an zu sprechen!
leider klapt da nichts!
also ich versuche lediglich 2 Byte zu schicken, ($1B und $03) hiernach sollte ein Industrie Drucker eigendlich einen Neustart machen.
wenn ich das über einen Hyperterminal schicke klapt das auch, nur über PureBasic leider nicht!
Bin absolut Verzweifelt!
Der Code schrumpfte immer weiter zusammen!

Code: Alles auswählen

OpenSerialPort(1,"COM2",9600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,1024,1024) 
Delay(170)
;Define.s b
;If IsSerialPort(1)
;  SetSerialPortStatus(1, #PB_SerialPort_RTS, 1)
  
;  Debug "is da"
;EndIf
;b=" S001 DAS "
;Debug b
;Debug AvailableSerialPortOutput(1)

WriteSerialPortData(1,27,1)
Delay(150)
WriteSerialPortData(1,3,1)
Währe für eure Hilfe sehr Dankbar!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: WriteSerialPortData

Beitrag von DarkDragon »

Ist die Baudrate korrekt? Und alle anderen Parameter in OpenSerialPort auch?
Wenn ja dann probier mal

Code: Alles auswählen

OpenSerialPort(1, "COM2", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1, 1) 
Dann wird praktisch nichts gepuffert.
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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: WriteSerialPortData

Beitrag von Kiffi »

des weiteren solltest Du den Rückgabewert von OpenSerialPort auswerten:

Code: Alles auswählen

If OpenSerialPort(...
  ; "Success"
  ; [...]
  CloseSerialPort(...
Else
  ; "Failed"
EndIf
Grüße ... Kiffi
a²+b²=mc²
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: WriteSerialPortData

Beitrag von - chris - »

und den Befehl

WriteSerialPortData(1,27,1)

nochmal in der Hilfe nachschauen:

Ergebnis = WriteSerialPortData(#SerialPort, *Puffer, Laenge)

z.B.:

*Puffer = AllocateMemory(1024)

PokeA(*Puffer + 0, $1B)
PokeA(*Puffer + 1, $03)

WriteSerialPortData(1, *Puffer, 2)
Zuletzt geändert von - chris - am 07.04.2011 15:44, insgesamt 2-mal geändert.
PB v5.72 x86/x64
Windows 10 Pro 64bit
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: WriteSerialPortData

Beitrag von DarkDragon »

- chris - hat geschrieben:und den Befehl

WriteSerialPortData(1,27,1)

nochmal in der Hilfe nachschauen:

Ergebnis = WriteSerialPortData(#SerialPort, *Puffer, Laenge)
:lol: Dass wir (Kiffi und ich) das übersehen konnten...
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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: WriteSerialPortData

Beitrag von Kiffi »

DarkDragon hat geschrieben::lol: Dass wir (Kiffi und ich) das übersehen konnten...
wir sind zu sehr darauf konditioniert, die nicht-offensichtlichen
Fehlerquellen zu entdecken ;-)

Grüße ... Kiffi
a²+b²=mc²
thomas223
Beiträge: 8
Registriert: 03.02.2008 21:24

Re: WriteSerialPortData

Beitrag von thomas223 »

Danke Dank Danke!!!!

Das geht auch wenn ich jetzt erst wieder herraus bekommen muss was ich dort mache!

Denn jetzt will ich ja gerne noch einen kurzen text dazwischen einfügen und das ACK vom Drucker empfangen!

:bounce:
thomas223
Beiträge: 8
Registriert: 03.02.2008 21:24

Re: WriteSerialPortData

Beitrag von thomas223 »

darf ich noch fragen was das * vor dem Puffer bedeutet?
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WriteSerialPortData

Beitrag von RSBasic »

Das ist ein Pointer, weitere Informationen findest du in der PB-Hilfe unter: Zeiger und Speicherzugriff
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten