c++串口读写源代码


VC实现串口通讯,数据接收、数据发送,数据解析,以回调函数的方式给其它调用 的地方或者界面直接使用。
资源截图
代码片段和文件信息
//###############################################################################################################
// 串口操作类CComPort_Meter类CComPort_Meter的实现文件
//###############################################################################################################

#include “stdafx.h“
#include “CComPort_Meter.h“

#define IN_BUF_SIZE 1024*100 //串口输入缓冲区的大小
#define OUT_BUF_SIZE 1024*10 //串口输出缓冲区的大小

unsigned long power(int base int times)
{
int i;
unsigned long rslt = 1;
for(i=0; i rslt *= base;
return rslt;
}
unsigned long  BCDtoDec(byte *bcd)
{

if (bcd[0]==0xff)
{
bcd[0]=0;
}
if (bcd[1]==0xff)
{
bcd[1]=0;
}
if (bcd[2]==0xff)
{
bcd[2]=0;
}

int bcd_int;


bcd_int=(int)((bcd[0]>>4)&0x0f)*100000;
bcd_int+=(int)(bcd[0]&0x0f)*10000;
bcd_int+=(int)((bcd[1]>>4)&0x0f)*1000;
bcd_int+=(int)(bcd[1]&0x0f)*100;
bcd_int+=(int)((bcd[2]>>4)&0x0f)*10;
bcd_int+=(int)bcd[2]&0x0f;


return bcd_int;

}

byte CheckSum(byte crcData[] int offset int count)
{
unsigned int sum = 0;
for (int i = offset; i < offset + count; i++)
{
sum += crcData[i];
}
return (byte) (sum & 0xFF);
}


CString Char2CString(char *pszCmd)
{
int charlen;
int len;
CString str;
charlen=strlen(pszCmd);
len=MultiByteToWideChar(CP_ACP0pszCmdcharlenNULL0);
TCHAR *buf=new TCHAR[len+1];
MultiByteToWideChar(CP_ACP0pszCmdcharlen(LPWSTR)buflen);
buf[len]=‘‘;
str=_T(““);
str.Append(buf);
return str;
}

CString FloatStr2CString(CString k)
{

BOOL bAgain=TRUE;

while((k.GetLength()>0)&&(k.Find(_T(“.“))>=0)&&(bAgain==TRUE))
{
if(((k.GetAt(k.GetLength()-1)==‘0‘))||(k.GetAt(k.GetLength()-1)==_T(‘.‘)))
{

k=k.Left(k.GetLength()-1);
}
else 
bAgain=FALSE;
}

bAgain=TRUE;

while((k.GetLength()>0)&&(bAgain==TRUE))
{
if(k.GetAt(0)==‘0‘)
{
k=k.Right(k.GetLength()-1);
}

else 
bAgain=FALSE;
}

return k;
}




BOOL CComPort_Meter::WeightDataHandle(LPCSTR pszDataProtocolInfo &info)
{

if (pStrBufTemp.length()>100)
{
pStrBufTemp=““;
}

if (1==m_CommunicaMode)
{
return PraseDataMode_Keli_1(pszData info);
}

if (2==m_CommunicaMode)
{
return PraseDataMode_Keli_2(pszData info);
}

if (3==m_CommunicaMode)
{
return PraseDataMode_Keli_3(pszData info);
}

if (4==m_CommunicaMode)
{
return PraseDataMode_Keli_4(pszData info);
}
if (5==m_CommunicaMode)
{
return PraseDataMode_Keli_5(pszData info);
}
if (6==m_CommunicaMode)
{
return PraseDataMode_Keli_6(pszData info);
}
if (7==m_CommunicaMode)
{
return PraseDataMode_Keli_7(pszData info);
}
if (8==m_CommunicaMode)
{
return PraseDataMode_Keli_8(pszData info);
}
if (9==m_CommunicaMode)
{
return PraseDataMode_Keli_9(pszData info);
}

}


BOOL CComPort_Meter::PraseDataMode_Keli_1(LPCSTR pszDataProtocolInfo &info)
{


CString m_str_temp;
pStrBufTemp+=

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1959936  2017-10-14 11:36  ProtocolProcDebugProtocolProc.dll

     文件       5480  2017-10-14 11:36  ProtocolProcDebugProtocolProc.exp

     文件    6098912  2017-10-14 11:36  ProtocolProcDebugProtocolProc.ilk

     文件       9596  2017-10-14 11:36  ProtocolProcDebugProtocolProc.lib

     文件   11914240  2017-10-14 11:36  ProtocolProcDebugProtocolProc.pdb

     文件      31528  2017-09-14 14:47  ProtocolProcProtocolProcCComPort_Meter.cpp

     文件       2866  2017-10-14 11:36  ProtocolProcProtocolProcCComPort_Meter.h

     文件      27660  2017-10-14 11:36  ProtocolProcProtocolProcDebugBuildLog.htm

     文件     389447  2017-10-14 11:36  ProtocolProcProtocolProcDebugCComPort_Meter.obj

     文件     413444  2017-10-14 11:36  ProtocolProcProtocolProcDebugMeterProtocol.obj

     文件         65  2017-10-14 11:36  ProtocolProcProtocolProcDebugmt.dep

     文件        406  2017-10-14 11:36  ProtocolProcProtocolProcDebugProtocolProc.dll.embed.manifest

     文件        472  2017-10-14 11:36  ProtocolProcProtocolProcDebugProtocolProc.dll.embed.manifest.res

     文件        381  2017-10-14 11:36  ProtocolProcProtocolProcDebugProtocolProc.dll.intermediate.manifest

     文件      16669  2017-10-14 11:36  ProtocolProcProtocolProcDebugProtocolProc.obj

     文件   25755648  2017-10-14 11:36  ProtocolProcProtocolProcDebugProtocolProc.pch

     文件      10652  2017-10-14 11:36  ProtocolProcProtocolProcDebugProtocolProc.res

     文件     481044  2017-10-14 11:36  ProtocolProcProtocolProcDebugstdafx.obj

     文件    1215488  2017-10-14 11:36  ProtocolProcProtocolProcDebugvc90.idb

     文件    2347008  2017-10-14 11:36  ProtocolProcProtocolProcDebugvc90.pdb

     文件      17274  2017-10-14 11:33  ProtocolProcProtocolProcMeterProtocol.cpp

     文件       4708  2017-10-14 11:34  ProtocolProcProtocolProcMeterProtocol.h

     文件       1173  2017-10-14 11:27  ProtocolProcProtocolProcProtocolProc.cpp

     文件        112  2017-10-14 11:27  ProtocolProcProtocolProcProtocolProc.def

     文件        431  2017-10-14 11:27  ProtocolProcProtocolProcProtocolProc.h

     文件       3060  2017-10-14 11:27  ProtocolProcProtocolProcProtocolProc.rc

     文件       5615  2017-10-14 11:29  ProtocolProcProtocolProcProtocolProc.vcproj

     文件       1401  2018-04-26 09:39  ProtocolProcProtocolProcProtocolProc.vcproj.IKKBJFZLO3UIM2N.Administrator.user

     文件       2116  2017-10-14 11:27  ProtocolProcProtocolProcReadMe.txt

     文件        368  2017-10-14 11:27  ProtocolProcProtocolProc
esProtocolProc.rc2

............此处省略15个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)