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

Xenomorph
-
-
Posty:1
Rejestracja:9 cze 2005, o 12:03
Lokalizacja:Stalowa Wola
Kontaktowanie:
Protek, Metex i odczyt z COM'a

Postautor: Xenomorph » 9 cze 2005, o 12:04

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.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 31 gości