16,548
社区成员




int CCommunicationView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
SetTimer(1,1000,NULL);
i=0;
// TODO: Add your specialized creation code here
m_MSComm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);
if(m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
m_MSComm.SetPortOpen(FALSE);
m_MSComm.SetCommPort(1); //选择COM1
m_MSComm.SetInBufferSize(1024); //接收缓冲区
m_MSComm.SetOutBufferSize(1024);//发送缓冲区
m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_MSComm.SetInputMode(1);//以二进制方式读写数据
m_MSComm.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
m_MSComm.SetSettings("2400,n,8,1");//波特率2400无检验位,8个数据位,1个停止位
if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
m_MSComm.SetPortOpen(TRUE);//打开串口
if(m_MSComm.GetPortOpen())
AfxMessageBox("Open Serial Port Success!");
m_MSComm.GetInput(); //先预读缓冲区以清除残留数据
return 0;
}
void CCommunicationView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CString ww,w;
byte ppp0[260]={0xEB,0x90,0x04,0x00,0x01,0x80,0x00,0x85}; //
byte ppp1[260]={0xEB,0x90,0x04,0x00,0x02,0x80,0x00,0x86}; //
byte ppp2[260]={0xEB,0x90,0x04,0x00,0x05,0x80,0x00,0x89}; //
byte ppp3[260]={0xEB,0x90,0x04,0x00,0x06,0x80,0x00,0x8A}; //
byte ppp4[260]={0xEB,0x90,0x04,0x00,0x03,0x80,0x00,0x87}; //
CByteArray hexdata;
i++;
switch(i)
{
case 1:
{
for(int j=0;j<8;j++)
{
ww.Format("%02X ",ppp0[j]);
w+=ww;
}
int len1=String2Hex(w,hexdata);
m_MSComm.SetOutput(COleVariant(hexdata));
break;
}
case 2:
{
for(int j=0;j<8;j++)
{
ww.Format("%02X ",ppp1[j]);
w+=ww;
}
int len1=String2Hex(w,hexdata);
m_MSComm.SetOutput(COleVariant(hexdata));
break;
}
case 3:
{
for(int j=0;j<8;j++)
{
ww.Format("%02X ",ppp2[j]);
w+=ww;
}
int len1=String2Hex(w,hexdata);
m_MSComm.SetOutput(COleVariant(hexdata));
break;
}
case 4:
{
for(int j=0;j<8;j++)
{
ww.Format("%02X ",ppp3[j]);
w+=ww;
}
int len1=String2Hex(w,hexdata);
m_MSComm.SetOutput(COleVariant(hexdata));
break;
}
case 5:
{
for(int j=0;j<8;j++)
{
ww.Format("%02X ",ppp4[j]);
w+=ww;
}
int len1=String2Hex(w,hexdata);
m_MSComm.SetOutput(COleVariant(hexdata));
i=0;
break;
}
}
CView::OnTimer(nIDEvent);
}