发表于:2005-12-05 11:58:00
楼主
如下的程序利用VC++的MSCOMM控件来开发的,通信协议为$(一个字节)C(一个字节)PR(一个字节) SA(一个字节)DA(一个字节)ML(一个字节) MSG(ML个字节)CRC(两个字节)ACK(一个字节) 0x13(一个字节)0x10(一个字节),这个桢头为$和C,桢尾是0x13和0x10.MSG的域中有ML(十进制)个字节,否则错误。程序编译没问题,但是向数据库中添加数据时,ID不变化,请各位VC的爱好者看看我程序有没有逻辑错误,小弟不胜感谢了!
unsigned char FuYongChao[256];
static long lengthmistake=0;
static long mcrcmistake=0,maddressmistake=0,mreceivemistake=0,mterminalmistake=0, mothermistake=0, mnoreturn=0;
static long mcrcmistake1 = 0, mdatamistake = 0;
static long id;
void CTestView::OnComm()
{
// TODO: Add your control notification handler code here
// TODO: Add your command handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;
static long flag;
static long num;
if(m_ctrlcom.GetCommEvent()==2)
{
variant_inp=m_ctrlcom.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%x",bt);
m_strreceived+=' '+strtemp;
UpdateData(FALSE);
if(m_ctrlReceiveData.GetLineCount()>=50)
{
m_strreceived.Empty();
&nbs