Probleme de lecture sur le port serie
jackyjacky
Messages postés
23
Statut
Membre
-
unseulensemble -
unseulensemble -
Salut à tous
Je travaille avec VisualC++ 6.0 sous winNT
J'essaye de lire le port série, mais je n'arrive pas à lire son contenu en une seul fois.
Je pense que l'ideal serait de detecter le dernier caractere du fichier afin de stopper la lecture, mais ma variable de stockage est de type void* est donc je n'arrive pas à l'utiliser..
merci d'avance pour votre aide
Je travaille avec VisualC++ 6.0 sous winNT
J'essaye de lire le port série, mais je n'arrive pas à lire son contenu en une seul fois.
Je pense que l'ideal serait de detecter le dernier caractere du fichier afin de stopper la lecture, mais ma variable de stockage est de type void* est donc je n'arrive pas à l'utiliser..
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>
#define PORT1 "COM1"
#define PORT2 "COM2"
#define V1200 CBR_1200
#define V2400 CBR_2400
#define V4800 CBR_4800
#define V9600 CBR_9600
#define BITS_7 7
#define BITS_8 8
#define BIT_DE_STOP_1 ONESTOPBIT
#define BIT_DE_STOP_15 ONE5STOPBITS
#define BIT_DE_STOP_2 TWOSTOPBITS
#define PAS_DE_PARITE NOPARITY
#define PARITE_IMPAIRE ODDPARITY
#define PARITE_PAIRE EVENPARITY
#define OK 1
#define KO 0
#define LG_TRAME 1
int ouvrecom(char *strPort,long Baudrate,int Bitsize,int parite,int bitstop);
int reception(void *lpbuf,unsigned int ncountmax,unsigned int *pcountread);
void fermecom();
int recup();
DCB g_DCB;
HANDLE g_hCom=0;
void main(void)
{
char lpbuf[LG_TRAME];
unsigned int countread=0;
HANDLE handle;
DWORD byte=0;
int nCarALire;
handle=CreateFile("fabien.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
ouvrecom(PORT1,V9600,BITS_7,PAS_DE_PARITE,BIT_DE_STOP_1);
for(;;){
nCarALire=reception(lpbuf,LG_TRAME,&countread);
printf("%s",lpbuf);
WriteFile(handle,lpbuf,nCarALire,&byte,NULL);
CloseHandle(handle);
recup();
}
}
int ouvrecom(char *strPort,long Baudrate,int Bitsize,int parite,int bitstop)
{
g_hCom=CreateFile(strPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_WRITE_THROUGH|FILE_FLAG_NO_BUFFERING,NULL);
PurgeComm(g_hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
g_DCB.DCBlength=sizeof(DCB);
GetCommState(g_hCom,&g_DCB);
g_DCB.BaudRate=Baudrate;
g_DCB.ByteSize=Bitsize;
g_DCB.Parity=parite;
g_DCB.StopBits=bitstop;
g_DCB.fDtrControl=DTR_CONTROL_DISABLE;
SetCommState(g_hCom,&g_DCB);
return 0;
}
int reception(void *lpbuf,unsigned int ncountmax,unsigned int *pcountread)
{
COMSTAT Stat;
DWORD Errors;
unsigned int nCarALire;
unsigned long NCarLus=0;
int i=0;
Sleep(500);
ClearCommError(g_hCom,&Errors,&Stat);
nCarALire=Stat.cbInQue;
while(nCarALire==0)
{
ClearCommError(g_hCom,&Errors,&Stat);
Sleep(500);
nCarALire=Stat.cbInQue;
}
ReadFile(g_hCom,lpbuf,nCarALire,&NCarLus,NULL);
return nCarALire;
}
int recup()
{
FILE *recept;
char code[25];
recept=fopen("fabien.txt","rb");
fgets(code,20,recept);
printf("\n%s\n",code);
fclose(recept);
strcat(code,".txt");
printf("\n%s\n",code);
rename("fabien.txt",code);
return 0;
}
merci d'avance pour votre aide
A voir également:
- Probleme de lecture sur le port serie
- Lecture epub sur pc - Guide
- Télécharger idm gratuitement sans numéro de série - Télécharger - Téléchargement & Transfert
- Accusé de lecture gmail - Guide
- Confirmation de lecture whatsapp - Guide
- Numéro de série idm ✓ - Forum Microsoft Edge / Internet Explorer
mourad.memo@hotmail.com
% Reference: https://cnx.org/contents/5984b918-82be-41b3-b2a1-00c170b79888@1
%%
%% Reinitialisation
close all
clear all
%clc
%% TEST
data = 65;
%% Initialisation du port serie
% PortCom - BaudRate - Parity - Data - Stop
!mode com1:9600,n,8,1
fid = fopen('com1:','w');
fwrite(fid,data,'int8');
%ICI = fread(fid,1);
% close com port connection
fclose(fid);
Je cherche presentement à le faire sur linux