/**********************************************************************************************/ /* CAT Command project for FT857D - by YO5OUC - Nicolae Crisan (This is only a demo version! For Windows.) /***********************************************************************************************/ #include "stdafx.h" #include #include /***********************************************************************************************/ int _tmain(int argc, _TCHAR* argv[]) { HANDLE hSerialIn = INVALID_HANDLE_VALUE; COMMTIMEOUTS cto = {1, 100, 1000, 0, 0}; DCB dcb = { 0 }; /*replace COM2, try with: COM1 COM3 or COM4 only if it is necesary */ hSerialIn = CreateFile(_T("COM2 "),GENERIC_READ|GENERIC_WRITE,0,NULL,(int)OPEN_EXISTING,0,NULL); if(hSerialIn==INVALID_HANDLE_VALUE) { printf("Portul serial nu se poate deschide"); getchar(); return 0; } if(!SetCommTimeouts(hSerialIn,&cto)){ printf("Nu se pot seta parametrii CTO"); getchar(); return 0; } //set DCB for serial IO memset(&dcb,0,sizeof(dcb)); dcb.DCBlength = sizeof(dcb); dcb.BaudRate = 38400; dcb. fBinary = TRUE; dcb.fDtrControl = DTR_CONTROL_ENABLE; dcb.fRtsControl = RTS_CONTROL_ENABLE; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; dcb.fAbortOnError = TRUE; dcb.Parity = NOPARITY; dcb.StopBits = TWOSTOPBITS; dcb.ByteSize = 8; if(!SetCommState(hSerialIn,&dcb)){ printf("Nu se pot seta parametrii de stare DCB"); getchar(); return 0; } /************************Aici punem commenzile CAT specifice FT857D****************************************/ unsigned char buff_set_freq[5]={0x00, 0x37, 0x05, 0x10, 0x01};//set freq unsigned char buff_set_usb[5]={0x01, 0x00, 0x00, 0x00, 0x07};//set USB mode unsigned char buff_rx_status[5]={0x00, 0x00, 0x00, 0x00, 0x03};//set status mode 5 unsigned char buff_rx_note[7]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};//status buffer /*************************sunt mai multe dar deocamdata sunt destule pentru teste**************************/ unsigned char* p; DWORD rwrite = 5; DWORD rwstatus5 = 7; p=buff_set_freq; WriteFile(hSerialIn,p,rwrite,&rwrite,NULL);//triger the serial port to change frequency (3.705.10 - 80m/Band) Sleep(500);//wait 500msec p=buff_set_usb; WriteFile(hSerialIn,p,rwrite,&rwrite,NULL);//triger the serial port to change status mode to USB Sleep(500); p=buff_rx_status; WriteFile(hSerialIn,p,rwrite,&rwrite,NULL);//triger the serial port to send status mode 5 Sleep(500); p=buff_rx_note; ReadFile(hSerialIn,p,rwstatus5,&rwstatus5,NULL);//get current FT857D frequency & mode 5 Sleep(300); printf("FT857D replay: %x%x%x%x%x%x%x",buff_rx_note[0],buff_rx_note[1],buff_rx_note[2],buff_rx_note[3],buff_rx_note[4],buff_rx_note[5],buff_rx_note[6]); //o mica problema la afisare, functia printf va afisa in loc de 05, 5 sau in loc de 03, 3. DE exemplu in loc de 370510 -> (3.705.10 la FT857D) la consola apare 375101 //ultima cifra (1) inseamna modul de operare USB, vezi cartea de utilizare FT857D pagina 116 CloseHandle(hSerialIn);//close serial port getchar(); return 0; }