PDA

Visualizza la versione completa : Porte seriali in ANSI C


OMNIMIG
14-03-2002, 12:46
Salve a tutti!! Volevo avere informazioni su come usare le porte seriali in ANSI C!!
Accetto qualunque tipo di consiglio!!!!
Ho bisogno in pratica di poter controllare la porta COM per interfacciarmi con delle periferiche esterne!!

Grazie a tutti!!!
Siete Grandi!!!!!!
OMNIMIG

paolomat
14-03-2002, 15:57
Ciao,
da quanto ne s˛, l'interfacciamento alla porta seriale non Ŕ sotto specifiche ANSI, ma ogni produttore di compilatore ha implementato la sua tecnica.
Sotto che OS vuoi far girare il tuo codice?
Se Ŕ per Windows posso darti una mano, invece per DOS posso solo dirti che bisogna usare l'interrupt.

Ciao
Paolo

OMNIMIG
15-03-2002, 14:16
Sotto windows va benissimo!!!
Puoi aiutarmi??

Grazie!!! 6 un mito!!!

paolomat
17-03-2002, 09:55
Per usare le porte sotto Windows basta usarle come file, mi spiego meglio.

Per aprire:

HANDLE hComm;
hComm = CreateFile( gszPort, // "COM1" o "LPT1" ecc...
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0);
if (hComm == INVALID_HANDLE_VALUE)

Poi usi il ReadFile e il WriteFile per leggere e scrivere sulla porta.
Ci sono tante altre funzioni, ma queste sono le minime.

Ciao e fammi sapere.
Paolo

X-r3nd3r
04-06-2002, 05:40
scolta io sono riuscito ad aprire la comunicazione con la COM1, solo che nn riesco a scrivere, puoi pastare 1 esempio di come usare writefile?

tnx

paolomat
04-06-2002, 10:05
Ciao,
stasera ti scivo del codice (spero!!!).
Comunque l'errore pu˛ essere nella configurazione della porta(velocitÓ, paritÓ,ecc...), e non nel writefile.

Se hai fretta ti consiglio di dare un'occhiata all'API SetCommState sul sito MSDN http://www.microsoft.com/italy/msdn/
:tongue:

Ciao
Paolo

Shores
04-06-2002, 12:20
Ciao xrender! Cosa vuol dire che non riesci a scrivere?

Ciao!

X-r3nd3r
04-06-2002, 19:43
no sono riuscito a scrivere sulla COM1, adesso per˛ dovrei riuscire a far comporre un numero al modem e a inizializzarlo, semopre in C
kome posso fare?? tnx

Shores
04-06-2002, 19:50
Hai provato ad inviare:

ATDTXXXXXXX CR LF

Dove XXXXXX sono le cifre del numero da comporre e CR=Carriage return (ascii 13) e LF=LineFeed (ascii 10)?

Ciao!

X-r3nd3r
04-06-2002, 22:10
guarda stavo spiando kon portman le stringhe ke usa windows x inizializzare il mdoem, e ho visto ke la stringa ATDTXXXXXX la manda 1 CHAR per volta e manda ogni lettera 2 volte

A
A
T
T
D
D
T
T
X
X

nn so perkŔ... se mando la stringa in una volta sola nn va

Loading