各位大侠,请教一下;
我用MSComm发送和接收数据,实现了按钮的方式,发送一次接收一次,但是我想循环的实现10000次,
加入for循环后,发现循环发送的数据,一次就全部接收完毕了,请问有什么方式能实现我要求的功能么
附:void CPCcomtestDlg::OnCommMscomm1()
{
if(m_mscomm.get_CommEvent()==2)
{
variant_inp=m_mscomm.get_Input();
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++) //
{
char bt=*(char*)(rxdata+k);
strtemp.Format(TEXT("%c"),bt); //
strtemp.Format(_T("%c"),bt);
ShowData+=strtemp;
}
}按钮:
void CPCcomtestDlg::OnBnClickedButtonStart()
{ m_mscomm.put_Output(COleVariant(DataInput));}循环实现(发送接收)
我用MSComm发送和接收数据,实现了按钮的方式,发送一次接收一次,但是我想循环的实现10000次,
加入for循环后,发现循环发送的数据,一次就全部接收完毕了,请问有什么方式能实现我要求的功能么
附:void CPCcomtestDlg::OnCommMscomm1()
{
if(m_mscomm.get_CommEvent()==2)
{
variant_inp=m_mscomm.get_Input();
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++) //
{
char bt=*(char*)(rxdata+k);
strtemp.Format(TEXT("%c"),bt); //
strtemp.Format(_T("%c"),bt);
ShowData+=strtemp;
}
}按钮:
void CPCcomtestDlg::OnBnClickedButtonStart()
{ m_mscomm.put_Output(COleVariant(DataInput));}循环实现(发送接收)
解决方案 »
- WriteProcessMemory第四个参数大小如何确定?
- VS用unicode写MFC遇到的问题
- ??? IWebbrowser2过滤图片 ???
- 【所有分请教】stl/wince/.net 2005 相关的问题 ,呵呵 分数每天增加
- 在OnInitDialog() 中用MoveWindow去调整个各子窗口及其上面子控件位置,头都搞大了,谁能医我头疾?
- 达人们帮帮忙,关于对话框间传递消息的问题!谢谢!!!
- 怎样将一个文本文件中的所有的字符都清除,请大家帮忙
- VC.net中,在OnMouseMove()中,如何将设备座标转换为世界座标,DPtoLP好像在.net下不起作用
- VC能够和c写成的.o文件连编吗?应该怎样做?
- vtk 做的MPR
- 如何取消对话框下拉条 !
- 工具栏控件背景用GDI+画刷填充png图片俩点问题!!!
把发送的函数放到for循环里面!
//发送指令(已经将十六进制转为十进制了,这个转换是需要的吧)
private void button1_Click(object sender, EventArgs e)
{ byte[] bytOut = new byte[9];
bytOut[0] = 250;
bytOut[1] = 250;
bytOut[2] = 250;
bytOut[3] = 1;
bytOut[4] = 1;
bytOut[5] = 0;
bytOut[6] = 2;
bytOut[7] = 229;
bytOut[8] = 6;
axMSComm2.Output = bytOut;
} private void axMSComm1_OnComm(object sender, EventArgs e)
{
string strIn = "";
byte[] bytIn;
object objIn;
int i;
axMSComm1.InputLen = 0;//每次读入整个缓冲区
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;//输入方式为字节方式
axMSComm1.RThreshold = 1;
objIn = axMSComm1.Input;//这里注意axMSComm1.Input返回的是一个object的
bytIn = (byte[])objIn;
for (i = 0; i <= (bytIn.Length - 1); i++)
{
strIn += "rn" + " " + bytIn[i].ToString("X"); //转换为16进制显示
}
textBox1.Text += strIn; }
//打开串口
private void button2_Click(object sender, EventArgs e)
{
try
{
axMSComm1.CommPort = 3;
axMSComm1.InputMode =
MSCommLib.InputModeConstants.comInputModeBinary;
//用于设置或返回传输数据的类型发
//此例程是通过Input属性以二进制方式检取回数据
axMSComm1.PortOpen = true;
//打开端口
axMSComm1.InBufferCount = 0; }
catch
{
MessageBox.Show(e.ToString());
} }
有一个测试软件的,它在文本框输入指令是:FA FA FA 01 01 00 02 E5 06发送后收到的响应结果是:01->ACM6840-4-0200130415
但是我已经把它转化为十进制了,也就是源代码的byte[]里面的250这些数字。可是我运行程序,文本框什么也没显示。各位能告诉我哪里有问题啊,拜谢啦。