資源簡介
兩個例程
例程1:攝像頭識別小圓,然后通過串口輸出小圓的xy坐標(biāo)。單片機(jī)可以直接接受,具體串口配置自己配置。
例程2:VSwin32命令控制臺程序 調(diào)用串口,可以根據(jù)自己需要配置串口,完成windows與單片機(jī)的數(shù)據(jù)傳輸??勺鳛殚_發(fā)參考使用。
代碼片段和文件信息
#include???
#include???
#include???
#include?
using?namespace?std;
HANDLE?hComm;
OVERLAPPED?OverLapped;
COMSTAT?Comstat;
DWORD?dwCommEvents;
bool?OpenPort();??//打開串口??
bool?SetupDCB(int?rate_arg);??//設(shè)置DCB??
bool?SetupTimeout(DWORD?ReadInterval?DWORD?ReadTotalMultiplier?DWORD
ReadTotalConstant?DWORD?WriteTotalMultiplier?DWORD?WriteTotalConstant);???//設(shè)置超時??
void?ReciveChar();???//接收字符??
bool?WriteChar(char*?szWriteBuffer?DWORD?dwSend);??//發(fā)送字符??
bool?OpenPort()
{
hComm?=?CreateFile(L“COM8“//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!此處更改com口!?。。。。。。。。。。。。?!
GENERIC_READ?|?GENERIC_WRITE
0
0
OPEN_EXISTING
FILE_FLAG_OVERLAPPED
0);
if?(hComm?==?INVALID_HANDLE_VALUE)
return?FALSE;
else
return?true;
}
bool?SetupDCB(int?rate_arg)
{
DCB?dcb;
memset(&dcb?0?sizeof(dcb));
if?(!GetCommState(hComm?&dcb))//獲取當(dāng)前DCB配置??
{
return?FALSE;
}
dcb.DCBlength?=?sizeof(dcb);
/*?----------?Serial?Port?Config?-------?*/
dcb.BaudRate?=?rate_arg;
dcb.Parity?=?NOPARITY;
dcb.fParity?=?0;
dcb.StopBits?=?ONESTOPBIT;
dcb.ByteSize?=?8;
dcb.fOutxCtsFlow?=?0;
dcb.fOutxDsrFlow?=?0;
dcb.fDtrControl?=?DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity?=?0;
dcb.fRtsControl?=?RTS_CONTROL_DISABLE;
dcb.fOutX?=?0;
dcb.fInX?=?0;
dcb.fErrorChar?=?0;
dcb.fBinary?=?1;
dcb.fNull?=?0;
dcb.fAbortonerror?=?0;
dcb.wReserved?=?0;
dcb.XonLim?=?2;
dcb.XoffLim?=?4;
dcb.XonChar?=?0x13;
dcb.XoffChar?=?0x19;
dcb.EvtChar?=?0;
if?(!SetCommState(hComm?&dcb))
{
return?false;
}
else
return?true;
}
bool?SetupTimeout(DWORD?ReadInterval?DWORD?ReadTotalMultiplier?DWORD
ReadTotalConstant?DWORD?WriteTotalMultiplier?DWORD?WriteTotalConstant)
{
COMMTIMEOUTS?timeouts;
timeouts.ReadIntervalTimeout?=?ReadInterval;
timeouts.ReadTotalTimeoutConstant?=?ReadTotalConstant;
timeouts.ReadTotalTimeoutMultiplier?=?ReadTotalMultiplier;
timeouts.WriteTotalTimeoutConstant?=?WriteTotalConstant;
timeouts.WriteTotalTimeoutMultiplier?=?WriteTotalMultiplier;
if?(!SetCommTimeouts(hComm?&timeouts))
{
return?false;
}
else
return?true;
}
void?ReciveChar()
{
bool?bRead?=?TRUE;
bool?bResult?=?TRUE;
DWORD?dwError?=?0;
DWORD?BytesRead?=?0;
char?RXBuff;
for?(;;)
{
bResult?=?ClearCommError(hComm?&dwError?&Comstat);
if?(Comstat.cbInQue?==?0)
continue;
if?(bRead)
{
bResult?=?ReadFile(hComm??//通信設(shè)備(此處為串口)句柄,由CreateFile()返回值得到??
&RXBuff??//指向接收緩沖區(qū)??
1??//指明要從串口中讀取的字節(jié)數(shù)??
&BytesRead???//??
&OverLapped);??//OVERLAPPED結(jié)構(gòu)??
std::cout?< if?(!bResult)
{
switch?(dwError?==?GetLastError())
{
case?ERROR_IO_PENDING:
bRead?=?FALSE;
break;
default:
break;
}
}
}
else
{
bRead?=?TRUE;
}
}
if?(!bRead)
{
bRead?=?TRUE;
bResult?=?GetOverlappedResult(hComm
&OverLapped
&BytesRead
TRUE)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????89088??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\Debug\test.exe
?????文件?????618704??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\Debug\test.ilk
?????文件????2026496??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\Debug\test.pdb
?????文件??????19968??2017-08-10?23:53??攝像頭識小球串口發(fā)送數(shù)據(jù)\Release\test.exe
?????文件????1297408??2017-08-10?23:54??攝像頭識小球串口發(fā)送數(shù)據(jù)\Release\test.pdb
?????文件???????3242??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.log
?????文件????????596??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\cl.command.1.tlog
?????文件??????25198??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\CL.read.1.tlog
?????文件????????384??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\CL.write.1.tlog
?????文件???????3054??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\li
?????文件???????6230??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\li
?????文件????????368??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\li
?????文件????????162??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\test.tlog\test.lastbuildstate
?????文件????1035264??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\vc120.idb
?????文件????1462272??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\vc120.pdb
?????文件?????316854??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Debug\源.obj
?????文件????????393??2017-08-11?00:04??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.log
?????文件????????616??2017-08-10?23:53??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\cl.command.1.tlog
?????文件??????25144??2017-08-10?23:53??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\CL.read.1.tlog
?????文件????????290??2017-08-10?23:53??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\CL.write.1.tlog
?????文件???????3146??2017-08-10?23:54??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\li
?????文件???????6498??2017-08-10?23:54??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\li
?????文件????????290??2017-08-10?23:54??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\li
?????文件????????164??2017-08-11?00:04??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\test.tlog\test.lastbuildstate
?????文件????1200128??2017-08-10?23:53??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\vc120.pdb
?????文件????1406658??2017-08-10?23:53??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\Release\源.obj
?????文件???????4180??2017-08-11?00:04??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\test.vcxproj
?????文件????????944??2017-08-10?23:50??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\test.vcxproj.filters
?????文件???????6687??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test\源.cpp
?????文件???38797312??2017-08-11?00:15??攝像頭識小球串口發(fā)送數(shù)據(jù)\test.sdf
............此處省略39個文件信息
評論
共有 條評論