Vai al contenuto
PLC Forum


Quanti Bytes Posso Sparare Sulla Rs232 ?


Plata

Messaggi consigliati

Ciao a tutti, dunque sto scrivendo una applicazione per comunicare dei dati ad un tabellone elettronico via linea seriale rs232.

Quello che devo inviare al tabellone è in sostanza una stringa di cira 400 bytes di caratteri ascii del tipo 0x011 ecc in modo che poi il tabellone interpreti la mia stringona come dei codici esadecimali.

Per il momento sono riuscito tramite una applicazione in powerbuilder, ma anche in C usando le windows api (writefile ecc.) a inviare via seriale dei caratteri.

Ho poi una piccola applicazione in versione trial(scaricata da internet http://www.hhdsoftware.com/spmc.html) che riesce a monitorare cosa mando sulla seriale.

Il problema è che quando mando una stringona di piu' di 32 bytes sul software di monitoraggio vedo la stringa troncata e non piu lunga di 32 bytes.

A questo punto mi chiedo se ci sia una limitazione in bytes alla volta che posso inviare oppure se è il sw di monitoraggio che non visualizza piu di 32 bytes.

Il problema nasce anche dal fatto che non ho qui con me il tabellone elettronico, quindi devo fare tutto "alla cieca".

Vi ringrazio e saluto

Fabri

Link al commento
Condividi su altri siti


Non ho visto il programma che indichi, io ne uso un altro sul quale posso impostare qualche parametro dei buffer.

Ti consiglio, però, di usare sul PC una seconda seriale "in ricezione", dovrebbe bastarti HyperTerminal e un cavo cross.

Ciao

Andrea

Link al commento
Condividi su altri siti

Ciao Andrea, grazie della risposta.

E' una buona idea quella di usare l'altra seriale. solo che ne ho solo una.

Eventualmente potrei collegami con un altro pc.

Ma il sw che usi tu come si chi9ama?

Link al commento
Condividi su altri siti

Uso PortMon (non so il sito).

In alternativa a HyperTerminal, AccessPort (ma il sito spesso non va).

Per la seriale, se hai una USB disponibile puoi usare un adattatore, costa poche decine di euro e, con XP Pro, non ho mai avuto problemi.

Link al commento
Condividi su altri siti

Ciao Andrea, grazie per il consiglio su portmon è molto buono.

L'ho installato e sembra che vada, l'unico mio dubbio(io sono un po paranoico) è che non mi fa vedere tutto lo stringone completo pero' mi dice che i bytes scritti sono 412 quindi giusti.

L'output è questo:

0.00005166 pb60.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open

0.00000213 pb60.exe IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 2048 OutSize: 2048

0.00000289 pb60.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR

0.00000086 pb60.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:0 RC:1000 WM:0 WC:1000

0.00000083 pb60.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS

0.00000099 pb60.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS

0.00000090 pb60.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS

0.00000089 pb60.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS

0.00000081 pb60.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS

0.00000088 pb60.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS

0.00000083 pb60.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS

0.00000081 pb60.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS

0.00000810 pb60.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 19200

0.00000381 pb60.exe IOCTL_SERIAL_SET_RTS Serial0 SUCCESS

0.00000384 pb60.exe IOCTL_SERIAL_SET_DTR Serial0 SUCCESS

0.00000252 pb60.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8

0.00000126 pb60.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13

0.00000266 pb60.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:100 XoffLimit:100

0.20727243 pb60.exe IRP_MJ_WRITE Serial0 SUCCESS Length 412: 0x200x230x260x290x2C0x2F0x320x350x380x3B0x3E0x410x440x470x4A0x4D

0.00000529 pb60.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR

0.00000167 pb60.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask:

0.00000503 pb60.exe IOCTL_SERIAL_CLR_DTR Serial0 SUCCESS

0.00000330 pb60.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR

0.00000263 pb60.exe IRP_MJ_CLEANUP Serial0 SUCCESS

0.01244433 pb60.exe IRP_MJ_CLOSE Serial0 SUCCESS

Per il resto mi compro l'adattatore da usb a seriale come mi consigli e faccio ulteriori prove

Ciao grazie

Fabri

Link al commento
Condividi su altri siti

Prova a impostare così:

1) Nel menù "Computer" occorre selezionare l'opzione "Connect Local" (indica che si vuole sorvegliare il computer locale; con l'opzione "Connect..." si può selezionare anche un altro computer della rete).

2) Nel menù Capture vanno selezionate le voci "Capture Events", e, nel sottomenù Ports, le porte che si intendono controllare (se possibile, sarebbe meglio controllare un'unica porta alla volta per ridurre il numero di eventi catturati da PORTMON).

3) Nel menù Options selezionare le opzioni "Show Time", "Clock Time" e "Show Hex".

4) Nel menù Edit, alla voce "Max Output Bytes ...", è bene impostare come valore di "MaxBytes" un numero maggiore di 64 (per esempio 640). Questo valore infatti indica la dimensione massima del buffer usato da PORTMON per visualizzare i messaggi ricevuti/trasmessi sulla seriale.

5) Nel menù "Edit", scegliere "Filter/HighLight". Nella finestra di dialogo del filtro impostare "*" nella casella "Include:" e "IOCTL_SERIAL_GET_COMMSTATUS" nella casella "Exclude:" (questa impostazione del filtro non ha effetto in Windows '98, perché le richieste per Windows '98 hanno nomi diversi).

Credo che il punto 4 sia quello importante...

Fammi sapere

Ciao

Andrea

Modificato: da AndreaC
Link al commento
Condividi su altri siti

Eh già, ha funzionato alla stragrande, era il punto 4, ho modificato i bytes e ora mi vedo la stringona in output.

Ora non mi resta che fare la prova collegando l'adattatore usb oppure un altro pc.

Grazie ancora dell'aiuto

Fabri

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...