Pablo78 Inserito: 16 gennaio 2004 Segnala Inserito: 16 gennaio 2004 Salve Ragazzidesideravo sapere se qualcuno può indicarmi quali sono le librerie per il linguaggio C, contenenti funzioni per la gestione delle porte seriali....Io uso il compilatore DEV C++...Un'altra domanda: come faccio ad avviare un'altra applicazione dal mio eseguibile scritto in C?grazie ciao
amorri Inserita: 16 gennaio 2004 Segnala Inserita: 16 gennaio 2004 Puoi usare le API di Windows (se il tuo eseguibile è per windows) CreateFile, WriteFile e ReadFile. Per lanciare un altro eseguibile CreateProcess.Ciao
Pablo78 Inserita: 19 gennaio 2004 Autore Segnala Inserita: 19 gennaio 2004 Ragazzi ho risolto con il Qbasic, lo so è antiquato come linguaggio ma ha la funzione OPEN COM che consente di comunicare con la porta seriale....ciao
Pablo78 Inserita: 21 gennaio 2004 Autore Segnala Inserita: 21 gennaio 2004 Ragazziho un leggero (forse grosso) problema.In pratica acquisisco da µcontrollore dei dati provenienti da un sensore. Diamo per assodato che i dati siano corretti, in quanto ho avuto modo di provare il sistema e non ci sono problemi a livello hardware.Gestisco la comunicazione seriale tramite QBASIC solo che nel convertire gli ASCII provenienti dal µControllore, c sono delle cifre errate, ovvero che non rientrano nel range dei numeri che può mandare il µcontrollore. ribadisco che ho avuto modo di verificare la correttezza dei dati mandati dal µcontrollore, e che l'algoritmo di conversione che utilizzo per la conversione dei dati è stato già verificato. Quindi mi chiedo se è un problema intrinseco del QBASIC oppure?Non credo sia un problema di velocità di comunicazione (uso 9600 baud), e quindi il PC perde tempo (clock del PC 266 MHZ) nell'eseguire la varie operazioni (di controllo e di scrittura su hd), tra l'altro trasferendo solo a video (divrebbe essere + veloce la scrittura) ho la stessa problematica.avete dei suggerimenti? Se non sono stato chiaro potete chiedere magari risolviamo sto problema.Grazie ciao
ifachsoftware Inserita: 21 gennaio 2004 Segnala Inserita: 21 gennaio 2004 Le impostazioni come Bit di Dati / Parita' / Bit di Stop sono corrette ?Ciao
fabri Inserita: 21 gennaio 2004 Segnala Inserita: 21 gennaio 2004 Secondo me sono disturbi nella comunicazone prova a implementare un byte di controllo di comunicazone come nei PLC se provi a guardare ad esempio nei manuali omron come avviene la comunicazione con la seriale alla fine di ogni stringa l'ultimo carattere si chiama FCS e si ottiene tramite or esclusivo dei caratteri trasmessi,tra l'altro a pagina 334 del manuale di programmazione vedi un esempio in basic per calcolarloCiao, Fabrizio
gstefani Inserita: 21 gennaio 2004 Segnala Inserita: 21 gennaio 2004 Ciao,hai provato a verificare, ad esempio con Hyperterminal, se il PC riceve i caratteri ASCII corretti?Ciao
Pablo78 Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 (modificato) Le impostazioni come Bit di Dati / Parita' / Bit di Stop sono corrette ?Si, credo di si in quanto scrivo questa funzione:OPEN "COM1:9600,N,8,1,CD0,CS0,DC0,OP0,TB2048,RB2048" e poi ne ho la conferma in quanto nella E²PROM del PIC ho scritto delle frasi che trasferisco attraverso la seriale e leggo correttamente a video.hai provato a verificare, ad esempio con Hyperterminal, se il PC riceve i caratteri ASCII corretti? Modificato: 22 gennaio 2004 da Pablo78
Pablo78 Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Scartabellando su internet ho trovato un'articolino che ripota un esempio:OPEN "com1:9600,n,8,1,CD0,CS0,DS0,RS" FOR INPUT AS #1 readit: ' The stamp needs these next two lines to clear the DTR bit on ' com port 1 tcmp = INP(&H3FC) OUT &H3FC, tcmp AND 254 ' Take in the bytes one after another: Stamp is sending them in ' the form space,space,number or space,number,number or number, ' number,number for the digits between 0 and 999. ' The "READ IT" loop grabs three digits:Se ho capito bene, dovrebbe prendere i byte ricevuti uno dopo l'altro e mandarli sotto forma :"SPAZIO-SPAZIO-NUMERO" oppure "SPAZIO-NUMERO-NUMERO" oppure "NUMERO-NUMERO-NUMERO"...Questo si ricollega al fatto che se io mando semplicemente un carattere alla seriale e poi ricevendolo lo trasferisco ad un file, scriverà la cifra + alcuni spazi. Può essere che ciò è dovuto al fatto che i caratteri codificati in ASCII vanno da 0 a 255 e quindi se mando un carattere corrispondente a 5 riceverò "spazio-spazio-5" se invece è 60 avrò "spazio-6-0" mentre per 235 "2-3-5". Adesso come dice la mia ragazza "cavoletto marcio!!" ,come faccio a risolvere? Spero che queste deduzioni servano almeno a qualcuno....... Ciao Paolo
luciano Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 scusa ma perche non usi il visual basic ?
Pablo78 Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 scusa ma perche non usi il visual basic ?
ifachsoftware Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 OPEN "COM1:9600,N,8,1,CD0,CS0,DC0,OP0,TB2048,RB2048" FOR RANDOM AS #1 'APERTURA COM1
Pablo78 Inserita: 23 gennaio 2004 Autore Segnala Inserita: 23 gennaio 2004 Ragazzi dopo estenuanti e molteplici esperimenti ho scovato e risolto il problema.....il programma, partita l'acquisizione, non so per quale arcano motivo si "mangia" 1 byte che non scrive sul file.In pratica devo convertire in decimale numeri composti da due byte in range che va 0000 a 03FF (0÷1023) e da FFFF÷FC01 (-1÷-1023), ciò è dovuto al fatto che ho un modulo A/D a 10 bit e che le sottrazioni che avvengono a livello (assembler) in complemento alla base. Quello che succedeva era invece che apparivano cifre tipo 1280, oppure ±255 ecc. quando io acquisivo massa flottante!!.....Infatti adesso nel file ho cifre che non vanno aldilà del -4÷+4 con la maggior parte dei numeri a 0.Quindi per portare le cose sulla strada visto che non posso recuperare quel 1°byte, gli faccio mangiare pure il 2° in maniera tale che il resto dei byte in arrivo siano accoppiati perfettamente. Ho fatto diverse prove e le cose sembrano funzionare.... Speriamo che si mantengano così fino alla presentazione di questo lavoro..... Ciao e grazie a tuttiPaolo
Pablo78 Inserita: 27 gennaio 2004 Autore Segnala Inserita: 27 gennaio 2004 Ma non si riesce proprio a fare qualcosa, per comunicare con la seriale tramite C?So che esiste la libreria bios, con le funzioni bioscom ecc.oppure la dos, con file header dos.h...Aiutatemi
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora