我的串口通信程序 点击:400 | 回复:1



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于: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



如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-12-05 12:08:00
1楼
"数据库中添加数据时,ID不变化"时,m_pSet->Update()成功了吗?
m_pSet中的数据是正确的吗?

热门招聘
相关主题

官方公众号

智造工程师