| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5655 人关注过本帖
标题:[求助] serialPort的"DataReceived" 事件里为何不能访问窗体上的控件! ...
只看楼主 加入收藏
cqlmp
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2007-1-29
收藏
得分:0 
顶一下!
2007-03-21 15:22
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
或许是那设备发送了两次
你加等好了
this.textCardnum.text+=串口取出数据;

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2007-03-21 16:42
cqlmp
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2007-1-29
收藏
得分:0 

现在我就是怀疑设备分两次发送,这正是我不想发生的事情了!如此搞得我程序有很大的问题:因为我本想一次性读出卡号,然后在触发事件里判断是是否合法,合法的弹出会员消费窗体,非法的就弹出警告框,现在因为分两次发送,第一次读出的卡号肯定是不正确的,从而弹出非法警告框,但是该卡明明是合法的,是不应该提示非法的!

我按照 chenjin145 朋友写的程序如下:因为设备将ID卡的数据分两次发送,正确卡号也会弹出警告框,不知道该怎么解决,希望高手们提点解决问题的方法,特别是 chenjin145 朋友,你可要帮帮我啊!
顺便提示一下:ID卡里标准数据是0015002038,我在测试项目的时候,第一次接收到的是0015002;第二次读出的是38,
源程序关键代码如下:
public delegate void DataReceivedDelegate(object sender, EventArgs e);
private void serialPort1_DataReceived(object sender, EventArgs e)
{
 Invoke(new DataReceivedDelegate(CallDataReceived), new object[] { sender, e });
}
public void CallDataReceived(object sender, EventArgs e)
{
if (this.serialPort1.BytesToRead > this.serialPort1.ReceivedBytesThreshold)
{
//从串口读数据
char[] data = new char[10];
this.serialPort1.Read(data, 0, 10);
StringBuilder sb = new StringBuilder();
sb.Append(data);
this.textCardnum.Text += sb.ToString();

//将""替换掉,将正确的卡号重写到textCadenum控件
string cardnum = textCardnum.Text.Replace("", "");
string cardnum1 = cardnum.Replace("", "");
textCardnum.Text = cardnum1;

//从数据库查询该卡号是否合法
string sql1 = "select guest_id from guest where guest_cardnum=" + cardnum1 + "";

//如果是合法的卡号则弹出客户消费页面,haverow是个判断是否有记录的函数!
if (haverow(sql1) == true)
{
 Xf xf;
 xf = new Xf(this.textCardnum);
 xf.ShowDialog();
}

//如果是非法的卡号则弹出警告框
else
{
MessageBox.Show("该卡是非法卡", "警告");
textCardnum.Text = "";
}
}
}

2007-03-22 21:25
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
判断吧
如果接受的串第一位为 就存起来接第二次
然后判断是否非法 再丢弃

否则直接非法

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2007-03-23 08:52
cqlmp
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2007-1-29
收藏
得分:0 
好的,试下,先谢谢,在顶顶!
2007-03-23 19:47
ykp
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2011-3-23
收藏
得分:0 
属于跨线程调用问题,建议去搜一下跨线程调用的资料看看
2011-04-13 21:43
快速回复:[求助] serialPort的"DataReceived" 事件里为何不能访问窗体上的控件! ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024990 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved