I/O am Com Port

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Bigmichi

Betreff: I/O am Com Port

BeitragMi, Dez 17, 2003 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann man von den ComPorts lesen und schreiben ?

gibt es dazu ein Befehl oda mus sman die Userlib zu hilfe nehmen ?

Hat jemand sowas schongemacht ?

wollte meien Sender an den PC hängen (FC16) läuft üba ComPort =)

Wäre cool wenn jemand was weiß =)

Hubsi

BeitragMi, Dez 17, 2003 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht nur via Dll. Allerdings hab ich jetzt keine Info zur Hand mit welcher es funktioniert. Vielleicht hilft da Google weiter Question
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Vertex

BeitragMi, Dez 17, 2003 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Bevor ich anfange einen meterlangen VB Code in Blitz zu übersetzen,
würde mich schon interessieren, ob Du das wirklich brauchst, oder Du das
nur aus Flacks wissen willst.
mfg olli

Plasma(alt)

Betreff: halt

BeitragMi, Dez 17, 2003 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn er es nicht braucht ich werde es brauchen !

Bigmichi

BeitragMi, Dez 17, 2003 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich auch wäre echt mega cool =) wollt mai schon imma nen Hubisim bauen =)

wäre echt cool =)

Vertex

BeitragDo, Dez 18, 2003 0:12
Antworten mit Zitat
Benutzer-Profile anzeigen
OK ich werd emorgen daran weiter arbeiten:
Code: [AUSKLAPPEN]

; kernel defined constants

Const OPEN_EXISTING        = 3
Const GENERIC_READ         = $80000000
Const GENERIC_WRITE        = $40000000
Const INVALID_HANDLE_VALUE = $FFFF
Const MAXDWORD             = $FFFF

; comms Constants

Const PURGE_TXCLEAR = $4
Const PURGE_RXCLEAR = $8

Const CE_RXOVER   = $1   ; Receive Queue overflow
Const CE_OVERRUN  = $2   ; Receive Overrun Error
Const CE_RXPARITY = $4   ; Receive Parity Error
Const CE_FRAME    = $8   ; Receive Framing error
Const CE_BREAK    = $10  ; Break Detected
Const CE_TXFULL   = $100 ; TX Queue is full

Const SETRTS = 3 ; Set RTS high
Const SETDTR = 5 ; Set DTR high


Function OpenComPort(strPortName$,strSettings$)
   Local tCto,tDcb,hPort,lErr
   tCto = CreateBank(20)
   tDcb = CreateBank(79)
   
   PokeInt tDcb,00,79 ; DCBLength
   
   ; get kernel To build a Default DCB For us
   ; based on com settings String
   BuildCommDCB(strSettings$,tCdb)
   
   ; open that com port
   hPort = CreateFile(strPortName$,GENERIC_READ + GENERIC_WRITE,0,0,OPEN_EXISTING,0,0)
   
   ; did we get port open ...
   If hPort = INVALID_HANDLE_VALUE Then
      lErr = GetLastError()
      DebugLog "Failed to open comport( err=" + Str$(lErr) + ")"
   
      ; setup return to failure
      Return INVALID_HANDLE_VALUE
   Else
      ; ... yes, get port ready for action
      SetCommState(hPort,tDcb)
      
      ; set up buffer sizes and re-initialize comm driver
      SetupComm(hPort,64000,64000)
      
      ; setup timeout parameters for this port
      PokeInt tCto,00,MAXDWORD
      PokeInt tCto,04,0
      PokeInt tCto,08,0
      PokeInt tCto,12,0
      PokeInt tCto,16,10000
      SetCommTimeouts(hPort,tCto)
      
      ; setup returns for success
      Return hPort
   EndIf
End Function

Function WriteCommPort(lPortHandle,strData$,cbData)
   Local fWrite,cbData,I,cdWritten,lErr,tComStat,lErrFLags
   
   cdData = CreateBank(Len(strData$)+1)
   For I = 1 To Len(strData$)
      PokeByte cdData,I-1,Asc(Mid$(strData$,I,1))
   Next
   cdWritten = CreateBank(4)
   
   fWrite = WriteFile2(lPortHandle,cdData,cbData,cdWritten,0)
   
   ; check if that worked
   If Not fWrite Then
      ; get error from kernel
      lErr = GetLastError()
      DebugLog "WriteFile failed ( err=" + Str$(lErr) + ")"
      
      ; make sure any comms errors are cleared
      tComStat  = CreateBank(40)
      lErrFLags = CreateBank(4)
      ClearCommError(lPortHandle,lErrFlags,tComStat)
      handleCommError(lPortHandle,lErrFlags)
   EndIf
   
   Return fWrite
End Function

Zitat:

.lib "Kernel32.dll"
CreateFile%(lpFileName$,dwDesiredAccess,dwShareMode,lpSecurityAttributes,dwCreationDistribution,dwFlagsAndAttributes,hTemplateFile) : "CreateFileA"
CloseHandle%(hObject) : "CloseHandle"
GetLastError%() : "GetLastError"
WriteFile2%(hFile,lpBuffer*,nNumberOfBytesToWrite,nNumberOfBytesWritten*,lpOverlapped) : "WriteFile"
ReadFile%(hFile,lpBuffer*,nNumberOfBytesToRead,nNumberOfBytesRead*,lpOverlapped) : "ReadFile"

SetCommState%(hFile,lpDCB*) : "SetCommState"
SetCommTimeouts%(hFile,lpCommTimeouts*) : "SetCommTimeouts"
PurgeComm%(hFile,dwFlags) : "PurgeComm"
BuildCommDCB%(lpDef$,lpDCB) : "BuildCommDCB"
SetCommMask%(hFile,dwEvtMask) : "SetCommMask"
ClearCommError%(hFile,lpErrors*,lpStat*) : "ClearCommError"
SetupComm%(hFile,dwInQueue,dwOutQueue) : "SetupComm"
EscapeCommFunction%(hFile,dwFunc) : "EscapeCommFunction"
GetCommMask%(hFile,lpEvtMask) : "GetCommMask"
GetCommModemStatus%(hFile,lpModemStat*,) : "GetCommModemStatus"
WaitCommEvent%(hFile,lpEvtMask,lpOverlapped) : "WaitCommEvent"

mfg olli

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group