Witam!
Mam problem, mam program który odczytuje dane wysyłane z com'a. Gdy podłączyłem Proteka 506 ładnie wszytsko działało, zczytywała dane i zapisywał do pliku a gdy podłączyłem Metex'a M-3660D to niby cos odbierał ale nic nie zapisywał nie czaje co się dzieje, moze mi ktoś pomóc ????
A oto program :
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
/* stale zmienne */
HANDLE hFile,hMutex;
DCB dcb;
DWORD fdwEvtMask;
COMSTAT Stat;
DWORD Errors;
DWORD NumberOfBytesWritten;
DWORD NumberOfBytesRead;
DWORD thread_id;
DWORD WINAPI ReadThreadFunc( LPVOID );
char temp[16];
int i, k, ilosc_pom, opoznienie;
unsigned char bajt, bufor[15];
FILE *file;
/* bebchy programu */
int main(int argc, char *argv[])
{
/* zaczynamy odczyt */
printf("Odczyt rozpoczety\n\n");
hFile=CreateFile("COM1",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
if(hFile==INVALID_HANDLE_VALUE) // sprawdza czy port jest otwarty prawidlowo
{
printf("Nie moge otworzyc portu !\n");
getchar();
return FALSE;
}
SetupComm(hFile,15,15); // inicjalizuje parametry komunikacyjne portu (wskaznik i bufory)
dcb.DCBlength = sizeof(dcb); // aktualny rozmiar struktury DCB
GetCommState(hFile, &dcb); // udostepnienie aktualnych parametrow DCB
//----if'y dla parametrów komunikacyjnych -----
dcb.BaudRate = CBR_1200;
dcb.fParity = FALSE;
dcb.StopBits = ONESTOPBIT; // bity stopu
dcb.ByteSize = 7; // rozmiar danych
dcb.fDtrControl = DTR_CONTROL_ENABLE; // liniia DTR stale aktywna
dcb.fRtsControl = RTS_CONTROL_ENABLE; // linia RTS nieaktywna - aktywowana podczas nadawania
if(!SetCommState(hFile,&dcb))
{
printf("Nie moge otworzyc portu !\n");
getchar();
return FALSE;
}
GetCommMask(hFile, &fdwEvtMask);
SetCommMask(hFile, EV_RXCHAR);
file=fopen("rs_log.txt","a");
bajt='D';
for (k=0; k < 5; k++)
{
Sleep(3000);
WriteFile(hFile,&bajt,1,&NumberOfBytesWritten,NULL);
printf ("Wyslano jeden bajt na port COM1\n");
Sleep(10);
printf ("Pomiar:", k,"\n");
ReadFile(hFile,bufor,15,&NumberOfBytesRead,NULL);
fprintf(file,"%s",bufor);
printf("Odebralem znak: ",bufor);
}
fclose(file);
CloseHandle(hFile);
return 0;
}
w zasadzie to nic nie odbiera / znacyz pisze ze odebrał znak ale nic nie wyświetla //
acha jeszcze jedno pytanie czemu funkcja Sleep() zatrzymuje mi program na mSekundy a nie na sekundy ? przeciez powinna zatrzymywac na msec.
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięProtek, Metex i odczyt z COM'a
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 16 gości