View Full Version : [c]Gestione porta com
motogpdesmo16
08-11-2004, 21:22
Come si potrebbe iniziare a implementare la gestione di una porta com per la trasmissione di stringhe di testo da un pc all'altro utilizzando un cavetto e quindi in connessione Null Modem??
Qualcuno ha qualche idea??grazie.
Sistema operativo e compilatore ?
motogpdesmo16
08-11-2004, 22:12
windows 98 come sistema operativo e turbo c (del quale non ricordo la versione al momento) come compilatore.
Se proprio vuoi usare Turbo C (che ricordo è un antiquato compilatore C che genera applicazioni per DOS a 16 bit e tra l'altro ben poco aderente allo standard)...la porta COM la programmi tramite le funzioni inportb e outportb...
http://217.58.98.154/corso/informatica/aree-progetto/ser-moro97-98/index.html
motogpdesmo16
08-11-2004, 23:03
diciamo che è quello che mi interessa.
Il C lo uso per scopi didattici.
ti ringrazio.
Se dovessi avere problemi, spero di avere aiuto (sempre nei limiti del possibile) qui..
Originariamente inviato da motogpdesmo16
Il C lo uso per scopi didattici.
Proprio per quello che il Turbo C è obsoleto ;)
Tassadar
09-11-2004, 09:17
puoi scriverti anche una routine assembler... non è difficile :)
motogpdesmo16
09-11-2004, 10:56
essendo per scopi didattici, è meglio che la routine la scriva in C.
Ho tuttavia inizato definendo le librerie e le costanti:
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <iostream.h>;
#include <string.h
#include <stdlib.h>
#define MCR 3FCh; /*controllo stato modem*/
#define LCR 3FBh; /*controllo di linea&configurazione porta seriale*/
#define LSR 3FDh; /*stato della linea*/
#define THR 3F8h; /*dati di trasmissione*/
#define RBR 3F9h; /*dati di trasmissione*/
#define DLL 3F8h; /*registri per la velocit…*/
#define DLH 3F9h; /*registri per la velocit…*/
Tassadar
09-11-2004, 14:01
guarda che lui parlava di trasmissione null modem ;)
Devi chiudere il commento in fondo alle linee...
iostream.h non fa parte del C ;)
non serve il ";" alla fine della linea di include...
motogpdesmo16
09-11-2004, 15:21
Originariamente inviato da cionci
Devi chiudere il commento in fondo alle linee...
iostream.h non fa parte del C ;)
non serve il ";" alla fine della linea di include...
siccome è raro che io inserisca linee di commento, ho dimenticato di chiuderle....
e hai ragione riguardo il punto e virgola. Purtroppo qualcosa sfugge ogni tanto....
Dopo come mi converrebbe proseguire??
motogpdesmo16
09-11-2004, 15:22
Originariamente inviato da Tassadar
guarda che lui parlava di trasmissione null modem ;)
a chi ti riferivi?
Tassadar: avresti la firma un tantinello enorme ;) Al max si possono mettere immagini 100x50...
motogpdesmo16
09-11-2004, 17:41
un po' off topic però....
nessuno sa aiutarmi?
grazie.
Hai visto il link ? Lì c'è spiegato tutto...
motogpdesmo16
09-11-2004, 17:53
sincerament non l'ho visto bene perchè non ho avuto il tempo materiale di farlo.
Mi servirebbe l'input per partire. poi magari potrei anche farcela da solo.Intendo l'input della codifica...
Quale codifica ?
In quel link c'è sia la programmazione in polling che sotto interruzione della porta seriale...ed entrambe con un codice di esempio...meglio di così ;)
motogpdesmo16
09-11-2004, 19:28
adesso al link mi da :
Impossibile visualizzare la pagina
peccato. perchè era veramente fatto bene.
motogpdesmo16
09-11-2004, 20:59
sono arrivato fino a questo punto:
#include <stdio.h>;
#include <dos.h>;
#include <conio.h>;
#include <iostream.h>;
#include <string.h>;
#include <stdlib.h>;
#define MCR 3FCh; /*controllo stato modem
#define LCR 3FBh; /*controllo di linea&configurazione porta seriale
#define LSR 3FDh; /*stato della linea
#define THR 3F8h; /*dati di trasmissione
#define RBR 3F9h; /*dati di trasmissione
#define DLL 3F8h; /*registri per la velocit…
#define DLH 3F9h; /*registri per la velocit…
void scegli_porta ()
{
int porta;
int base;
cout<<" scegliere la porta COM da utilizzare";
cout<< "immettere 1 per la porta COM1 oppure 2 per la porta COM2";
cin>> porta;
switch (porta)
{
case 1: base=0X3F8;break;
case 2: base=0X2F8;break;
}
.........
........
e poi....
RaouL_BennetH
09-11-2004, 23:53
Originariamente inviato da motogpdesmo16
sono arrivato fino a questo punto:
#include <stdio.h>;
#include <dos.h>;
#include <conio.h>;
#include <iostream.h>;
#include <string.h>;
#include <stdlib.h>;
#define MCR 3FCh; /*controllo stato modem
#define LCR 3FBh; /*controllo di linea&configurazione porta seriale
#define LSR 3FDh; /*stato della linea
#define THR 3F8h; /*dati di trasmissione
#define RBR 3F9h; /*dati di trasmissione
#define DLL 3F8h; /*registri per la velocit…
#define DLH 3F9h; /*registri per la velocit…
void scegli_porta ()
{
int porta;
int base;
cout<<" scegliere la porta COM da utilizzare";
cout<< "immettere 1 per la porta COM1 oppure 2 per la porta COM2";
cin>> porta;
switch (porta)
{
case 1: base=0X3F8;break;
case 2: base=0X2F8;break;
}
.........
........
e poi....
e poi , dopo le direttive di inclusione non ci vuole il ";" :)
motogpdesmo16
10-11-2004, 06:47
Originariamente inviato da RaouL_BennetH
e poi , dopo le direttive di inclusione non ci vuole il ";" :)
infatti le ho tolte sotto consiglio di cionci. Questa è una prova scrita in "blocco note", perchè il turboc non era installato..
Nessun'altro consiglio?
Tassadar
10-11-2004, 08:48
Originariamente inviato da motogpdesmo16
a chi ti riferivi?
a te, solo che avevo letto male il tuo intervento ;)
@cionci: ora la firma è in regola?
A me il link funziona...forse perchè l'hai copiato selezionando il testo del link dal mio messaggio... Se ci clicki funziona...
Tassadar: ok ;) Grande sito...
Tassadar
10-11-2004, 13:19
Ti piace?! :D Iscriviti! :D
motogpdesmo16
10-11-2004, 13:29
@cionci: ti assicuro che ieri sera cliccavo e mi compariva "impossibile-....."
adesso fortunatamente funziona. Hai comunque dato un'occhiata a quello che ho fatto?
stai continuando a usare le librerie del c++ iostream.h fa parte del c++, per il c devi usare stdio.h
diventa:
printf(" scegliere la porta COM da utilizzare immettere 1 per la porta COM1 oppure 2 per la porta COM2\n");
scanf("%d", &porta);
ciao!
I define sono tutti sbagliati...
Per gli esadecimali si scrive così: 0x03FC
motogpdesmo16
10-11-2004, 21:59
Originariamente inviato da cionci
I define sono tutti sbagliati...
Per gli esadecimali si scrive così: 0x03FC
ok grazie.
comunque se la lascio stare quella libreria, la iostream.h, posso continuare ad usare cout e cin senza che il programma ne risenta.
Originariamente inviato da motogpdesmo16
ok grazie.
comunque se la lascio stare quella libreria, la iostream.h, posso continuare ad usare cout e cin senza che il programma ne risenta.
Se è un programma didattico in C perchè vuoi fare un programma scritto male in C++ ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.