VC com 通信实例

HANDLE hCom;//全局變量串口句柄
COMMTIMEOUTS TimeOuts;
DCB dcb;
 按鈕代碼()
{
hCom=CreateFile(L“COM1”,// 串口名稱
  GENERIC_READ|GENERIC_WRITE,//允许读和写
  0,//独占方式
  NULL,
  OPEN_EXISTING,// 打开而不是创建
  0,//同步方式
  NULL);
/////////////////////////////////////////////////////////////////////////////////////////////////
if(hCom==(HANDLE)-1)
{
MessageBox(L"打开 COM 失败!");
}
SetupComm(hCom,1024,1024);//输入缓冲区和输出缓冲区的大小都是1024
//设定读超时
TimeOuts.ReadIntervalTimeout=1000;
TimeOuts.ReadTotalTimeoutMultiplier=500;
TimeOuts.ReadTotalTimeoutConstant=5000;	
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=500;
TimeOuts.WriteTotalTimeoutConstant=2000;
SetCommTimeouts(hCom,&TimeOuts);
GetCommState(hCom,&dcb);
dcb.BaudRate=9600;//波特壘率为 9600
dcb.ByteSize=8;//每个字节有3 8 位
dcb.Parity=NOPARITY;//无奇偶校验位
dcb.StopBits=TWOSTOPBITS;//两个停止位
SetCommState(hCom,&dcb);
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
//Com 同步通訊寫入()
//Com 同步通訊讀出()
//關閉com();
}

Com 同步通訊寫入()
{
char lpOutBuffer[100]={"%01#WCSY00080**\r"};//需要nSend 的數據
DWORD dwBytesWrite=100;//寫入數據的緩衝區大小
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hCom,&dwErrorFlags,&ComStat);

bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL);//寫入數據
if(!bWriteStat)
{
MessageBox(L"写串口失败!");
}

}
Com 同步通訊讀出()
{
char str[100]={""};//初始化
DWORD wCount;//读取的字节数
BOOL bReadStat;
bReadStat=ReadFile(hCom,str,100,&wCount,NULL);//讀出數據
if(!bReadStat)
{
MessageBox(L"读串口失败!");
return ;
}
CloseHandle(hCom);//關閉串口

}
關閉com()
{
CloseHandle(hCom);//關閉串口
}

  

posted @ 2015-03-30 11:01  暗名  阅读(1114)  评论(0编辑  收藏  举报