把
int count=0;
放到方法外部。
或者
if (serialPort1.IsOpen) { //端口已经打开了。 } else { serialPort1.Open(); }
我把代码试过了,还是不行,第一次OK,第2次就报警端口已打开。
@绿绿山水: serialPort1.IsOpen 可以判断端口是否已经打开了。
然后第2次扫描时,count就是1
你debug看看count什么时候变成1的。
debug 是什么意思?》如何进行debug?
@绿绿山水: 代码上加个断点,再F5跑啊
@Daniel Cai: 谢谢。就是局部变量的问题了,不过我现在不知道如何改成全局变量。
count是局部变量,每次点你都清零了。
那我该如何改正代码呢?把代码写出来让我测试测试哦。
if语句没毛病,你不是第一次给count赋值0,你是每次都给count赋值0,count永远不会为1,就如你对向你表白的人说:if(山无棱天地合) 我答应你;
谢谢勇哥,那我应该如何改正代码呢?
把代码写出来,让我 测试测试哈。
把coun缓存起来。
string key = "count"; int count=0; if(Session[key]!=null) { count = Convert.ToInt32(Session[key]); } if(count==0) { serialPort1.Open(); Session[key] = 1; } else { Session[key] = 2; }
Session 没有定义哦。
@绿绿山水: 哪是你缺少引用。
@QYCMS: 那应该怎么引用呢?
if条件永远成立。
这叫局部变量
那我应该如何改正代码呢?
每次点击按钮,count都是0,但你上一次点击端口已经打开,并没有进行关闭,所以自然就出问题了
把int count = 0放在button3_Click函数外就可以了
你应该去看看有关变量作用域的文章,理解一下局部变量的使用
我已经试过了,把int count = 0 放在button2 click 事件之外,但是呢,再点击按钮,还是会报警:
如下图所示:
@绿绿山水: 首先请明确你刚开始那个异常是无效操作异常,这个是越权异常,这个异常,你只给这几行代码没办法给你解决
@绿绿山水: 出现异常,要根据异常类型在相关代码中去找具体出问题的代码,很多时候这条语句报异常其实是前边执行的语句的问题,要思考程序的逻辑并打上断点,进行调试,单步执行查找具体原因
解决了咩,要是没有,我想看看
没有解决呢
@绿绿山水: 百度网盘 一首歌听到断带,看看代码?