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);//關閉串口

}

  

你可能感兴趣的:(com)