В будущем хочу использовать USB-порт как виртуальный СОМ-порт через FTDI.
Вообщем буду признателен за любую помощь!
В архиве есть DLL'ка, позволяющая работать как с железным так и с виртуальным COM портом.genii-2002 писал(а):В будущем хочу использовать USB-порт как виртуальный СОМ-порт через FTDI.
Я ж написал - в гугле! А проблемы сейчас вам ничего не скажут - столкнетесь, тогда и решать будем..genii-2002 писал(а):... где вы добывали знания?...
Реальный и виртуальный COM - разные вещи. Капитан Очевидность подсказывает, что для работы с микросхемами FTDI надо читать D2XX programmer's guide (это мануал на библиотеку от FTDI для работы с их микросхемами) и даташиты на сами микросхемы (самая распротраненная FT232R). Можно, конечно, и WinAPI использовать (гуглите функции CreateFile(...), WriteFile(...), ReadFile(...), CloseHandle(...) ), но специальная библиотека от FTDI дает гораздо большие возможности.В будущем хочу использовать USB-порт как виртуальный СОМ-порт через FTDI.
Код: Выделить всё
char in_p[50] = ".";
int RcvCounter=0;
HANDLE hFile = CreateFile("com1", GENERIC_READ|GENERIC_WRITE, 0,NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE){display("COM Error!");}
else{display("Порт открыт");}
DWORD dwBytesRead1 = 0;
while(1)
{
ReadFile(hFile, in_p, sizeof(in_p), &dwBytesRead1, NULL);
Sleep(1);
if(dwBytesRead1 != 0){break;}
}
RcvCounter = dwBytesRead1;
cout <<in_p<<" : "<<RcvCounter<<endl;
Код: Выделить всё
char in_p[50] = ".";
int RcvCounter=0;
HANDLE hFile = CreateFile("com1", GENERIC_READ|GENERIC_WRITE, 0,NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE){display("COM Error!");}
else{display("Порт открыт");}
DWORD dwBytesRead1 = 0;
while(dwBytesRead1 == 0)
{
ReadFile(hFile, in_p, sizeof(in_p), &dwBytesRead1, NULL);
Sleep(1);
}
RcvCounter = dwBytesRead1;
cout <<in_p<<" : "<<RcvCounter<<endl;
Код: Выделить всё
extern "C" __declspec (dllexport) void DXCOM::SetLine(OUT_LINES_NAME ln, bool state)
{
if(!state)
return ;
unsigned char value;
if(ln == DTR)
{
if(state)
value = 6;
else
value = 5;
}
if(ln == RTS)
{
if(state)
value = 4;
else
value = 3;
}
EscapeCommFunction(m_hFile, value);
}
Код: Выделить всё
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;