无法通过网页连续发送命令的问题

症状:在IE下第一次点击按钮发送命令可以完成,当重复点击时,后续命令不发送。其它浏览器无此问题。


原因:IE在重复打开相同链接时,会直接访问本地缓存而非重新请求链接。解决方法有二:一是在IE设置中关闭此项,当然这不能一劳永逸地解决问题。二是在每次发送链接时,用JS在后面添加一个随机数,这样每次打开的链接都不同,问题即可得到解决。

关于C#串口通信连续发送命令问题

04-02

这样子的,我想实现一个这样的功能rnrn一个生产线有一个电子看板,2个生产线的电子看板,连接一台电脑,rnrn然后 ,我在这台电脑上 ,实现 发送 2个命令 接受 2台电子看板的信息rnrn协议 线 都好了rnrn现在,我实现的代码大概如下,rnrnrnrn[code=C#]rn private void RealTimeInfor_Load(object sender, EventArgs e)rn rn LoadDgvData();//加载DataGridView数据rn comm.DataReceived += comm_DataReceived;//添加事件注册rn comm.RtsEnable = true;rn OpenPort();//打开端口rn rn[/code]rnrn[code=C#]rntimer控件 是 20秒 执行一次 SendCmd方法rn private void timer1_Tick(object sender, EventArgs e)rn rn SendCmd();//发送命令rn rn[/code]rnrn[code=C#]rn/// rn /// 发送命令rn /// rn public void SendCmd()rn rn List userpowerList = UserInforManager.ProcessUserPower(TransferValue.uinfor.UserPower);//UserPower是用户 可以操作电子看板的Id号,和PortBaudrateCmd.xml里的key值对应rn string _key = string.Empty;rn string cmd = string.Empty;rn Dictionary dic = ProcessXml.GetSureValue(System.IO.Directory.GetCurrentDirectory() + "/PortBaudrateCmd.xml");rn foreach (KeyValuePair kvp in dic)rn rn for (int j = 0; j < userpowerList.Count; j++)rn rn if (userpowerList[j] == kvp.Key)rn rn tryrn rn comm.WriteLine(kvp.Value);rn Thread.Sleep(300);rn rn catch (Exception ex)rn rn comm = new SerialPort();//捕获到异常信息,创建一个新的comm对象,之前的不能用了。rn Console.WriteLine(ex.Message);//现实异常信息给客户。rn rn rn rn rn rnrn[/code]rnrn[code=C#]rnPortBaudrateCmd.xmlrnrnrnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rnrn[/code]rnrn[code=C#]rn private bool Listening = false;//是否没有执行完invoke相关操作 rn private bool Closing = false;//是否正在关闭串口,执行Application.DoEvents,并阻止再次invoke rnrn void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn Thread.Sleep(500);rn if (Closing) return; rn tryrn rn int n = comm.BytesToRead;rn byte[] buf = new byte[n];rn comm.Read(buf, 0, n);rn builder.Remove(0, builder.Length);rn this.Invoke((EventHandler)(delegatern rn builder.Append(Encoding.ASCII.GetString(buf));rn txtHome.Text = "";rn txtHome.AppendText(builder.ToString());rn //rn Console.WriteLine(txtHome.Text);rn if (txtHome.Text.Length > 0 && txtHome.Text.Length % 81 == 0)rn rn string[] first = ProcessSerialportData.InitProcess(txtHome.Text); //第一次处理数据rn if (first == null)rn rn return;rn rn RealTimeInfo rti = ProcessSerialportData.AgainProcess(first);//第二次处理数据rn if (rti != null)//没有就增加,有就更新rn rn int num = RealTimeInfoManager.AddRealTimeInfor(rti);rn LoadDgvData();//重写绑定数据rn Console.WriteLine(num);rn rn rn ));rn rn catch (Exception e2)rn rn Console.WriteLine(e2.Message);rn rn finallyrn rn Listening = false;rn rnrn rn[/code]rnrnrn现在呢,只能发送一个命令,接受一个回发信息,我想请教下大家, 怎样才能发送UserPower 更多的命令,接受更多的电子看板信息呢?

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭