I/O am Com Port
Übersicht

![]() |
BigmichiBetreff: I/O am Com Port |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das geht nur via Dll. Allerdings hab ich jetzt keine Info zur Hand mit welcher es funktioniert. Vielleicht hilft da Google weiter ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
also wenn er es nicht braucht ich werde es brauchen ! | ||
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich auch wäre echt mega cool =) wollt mai schon imma nen Hubisim bauen =)
wäre echt cool =) |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group