欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
一個(gè)簡(jiǎn)單有效的串口DLL
頭文件:

#define OPEN_PORT_FAIL 201 //打開(kāi)串口失敗
#define GET_COM_STATA_FAIL 202 //取串口參數失敗
#define SET_COM_STATA_FAIL 203 //設置串口參數失敗
#define SET_COM_TIMEOUT_FAIL 204 //設置串口超時(shí)失敗
#define SEND_DATA_FAIL 205 //發(fā)送數據失敗
#define RECV_DATA_FAIL 206 //接收數據失敗
#define CLOSE_PORT_FAIL 207 //關(guān)閉串口失敗
#define SEND_DATA_TIMEOUT 208 //發(fā)送超時(shí)
#define RECV_DATA_TIMEOUT 209 //接收超時(shí)

typedef struct __COM_STR__{
int serial_port; //打開(kāi)端口號
int baud; //波特率
int timeout; //超時(shí)
HANDLE m_hComm; //端口句柄
} COM_STR;

C文件:

COM_STR  m_com_data;

CCommApp theApp;

// 初始化全局變量

void Init_Com(COM_STR m_data)
{
memset(&m_com_data,0,sizeof(COM_STR));
memcpy(&m_com_data,&m_data,sizeof(COM_STR));
}

// 打開(kāi)串口

int Open_Port()
{
DCB dcb;
int ret = 0;
char m_port[5]="";
sprintf(m_port,"COM%d",m_com_data.serial_port+1);

// 打開(kāi)串口為異步方式

m_com_data.m_hComm=CreateFile(
m_port,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);

if(m_com_data.m_hComm == (HANDLE) -1){
TRACE("OPEN_PORT_FAIL\n");
return OPEN_PORT_FAIL;
}

// 得到當前串口默認配置

ret=GetCommState(m_com_data.m_hComm,&dcb);
if(!ret){
CloseHandle(m_com_data.m_hComm);
TRACE("GET_COM_STATA_FAIL\n");
return GET_COM_STATA_FAIL;
}

// 設置串口波特率

int baud=CBR_1200;

switch(m_com_data.baud){
case 1 : baud=CBR_2400;   break;
case 2 : baud=CBR_4800;   break;
case 3 : baud=CBR_9600;   break;
case 4 : baud=CBR_14400;  break;
case 5 : baud=CBR_19200;  break;
case 6 : baud=CBR_38400;  break;
case 7 : baud=CBR_56000;  break;
case 8 : baud=CBR_57600;  break;
case 9 : baud=CBR_115200; break;
default : break;
}

// 設置當前串口參數

dcb.BaudRate=baud;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
dcb.ByteSize=8;

ret=SetCommState(m_com_data.m_hComm,&dcb);
if(!ret){
CloseHandle(m_com_data.m_hComm);
TRACE("SET_COM_STATA_FAIL\n");
return SET_COM_STATA_FAIL;
}

// 設置當前串口超時(shí)

COMMTIMEOUTS m_timeout;
m_timeout.ReadIntervalTimeout = 10000;
m_timeout.ReadTotalTimeoutConstant = m_com_data.timeout;
m_timeout.ReadTotalTimeoutMultiplier = 0;
m_timeout.WriteTotalTimeoutConstant = m_com_data.timeout;
m_timeout.WriteTotalTimeoutMultiplier = 0;

ret=SetCommTimeouts(m_com_data.m_hComm,&m_timeout);
if(!ret){
CloseHandle(m_com_data.m_hComm);
TRACE("SET_COM_TIMEOUT_FAIL\n");
return SET_COM_TIMEOUT_FAIL;
}

// 清串口緩沖區

PurgeComm(m_com_data.m_hComm,PURGE_TXCLEAR);
PurgeComm(m_com_data.m_hComm,PURGE_RXCLEAR);

return 0;
}

// 發(fā)送數據

int Send_Data(char * buf,int buf_len)
{
int ret=0;
DWORD len=0;
ret=WriteFile(m_com_data.m_hComm,buf,buf_len,&len,NULL);
if(!ret){
TRACE("SEND_DATA_FAIL\n");
return SEND_DATA_FAIL;
}
if(len==0){
TRACE("SEND_DATA_TIMEOUT\n");
return SEND_DATA_TIMEOUT;
}
return 0;
}

// 接收數據

int Recv_Data(char * buf,int buf_len)
{
int ret=0;
DWORD len=0;
ret=ReadFile(m_com_data.m_hComm,buf,buf_len,&len,NULL);
if(!ret){
TRACE("RECV_DATA_FAIL\n");
return RECV_DATA_FAIL;
}
if(len==0){
TRACE("RECV_DATA_TIMEOUT\n");
return RECV_DATA_TIMEOUT;
}
return 0;
}

// 完成一次發(fā)送接收任務(wù)

int Trans_Data(char * buf,int send_len,int recv_len)
{
int ret=0;
ret=Send_Data(buf,send_len);
if(ret){
return ret;
}
return (Recv_Data(buf,recv_len));
}

// 關(guān)閉串口

int Close_Port()
{
int ret=0;
ret=CloseHandle(m_com_data.m_hComm);
if(!ret){
TRACE("CLOSE_PORT_FAIL\n");
return CLOSE_PORT_FAIL ;
}
return 0;
}

導出文件(DEF):

; Comm.def : Declares the module parameters for the DLL.

LIBRARY      "Comm"
DESCRIPTION  ‘Comm Windows Dynamic Link Library‘

EXPORTS
    ; Explicit exports can go here

Init_Com @1
Open_Port @2
Send_Data @3
Recv_Data @4
Trans_Data @5
Close_Port @6

適用于小數據量串口數據通信,如終端控制,大文件傳輸請用同步方式。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux中select()函數分析
Linux下簡(jiǎn)單的串口讀寫(xiě)程序編寫(xiě)
面向連接的tcp/ip流程圖 - kenlistian - C++博客
激光雷達學(xué)習筆記(一)數據采集
C++串口編程實(shí)例
DSP2812串口波特率正確和良好的設計方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久