//调试通过
#include
#include
#include
using namespace std;
HANDLE hComm;
bool InitSerialPort()
{
DCB dcb;
String ComNo ="COM1"; //串口(COM1) 通信初始化
hComm =CreateFile (ComNo.c_str(),GENERIC_READ |GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
//如果通信端口未打开
{cout<<"打开通信端口错误!!"<
}
//将 dcb 地址传入,以取得通信参数
GetCommState(hComm,&dcb);
//将 dcb 地址传入,以取得通信参数
dcb.BaudRate =CBR_9600; //设置波特率为 9600
dcb.ByteSize =8; //字节为 8 位
dcb.Parity =NOPARITY; //校验位为 None
dcb.StopBits =ONESTOPBIT; //停止们为 1
//通信端口设置
if(! SetCommState(hComm,&dcb)) //设置通信端口状态
{cout<<"通信端口设置错误!!! "<
return false;
}
return true;
}
bool SendData()
{
char Data[50]={0} ;
unsigned long lnb ,nBS;
if (hComm==0) return false; //检查 Handle 值
Data[0]='h';
Data[1]='e';
Data[2]='l';
Data[3]='l';
Data[4]='o';
//cout< nBS=strlen(Data);
return WriteFile(hComm, Data,nBS,&lnb,NULL);
}
void ReceiveData()
{ char buff[512]={0}; } //参考文章: //《C++ Builder 中串口通信的实现》-张捍卫, 韦鹏宽 ( 海军蚌埠士官学校, 安徽 蚌埠 233012
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cst;
ClearCommError(hComm,&dwError,&cst); //读取通信端口状态
if (cst.cbInQue>sizeof(buff)) //数据长度是否大于缓冲区大小
{ PurgeComm(hComm,PURGE_RXCLEAR);
//清除通信端口数据
return;
}
ReadFile(hComm,buff,cst.cbInQue ,&nBytesRead,NULL);
cout<
int _tmain(int argc, _TCHAR* argv[])
{
if (InitSerialPort())
{
std::cout<
//ReceiveData();//接受数据,并显示到屏幕上
CloseHandle(hComm);
}
system("pause");
return 0;
}