c#控制台程序,串口通信运行报错System.InvalidOperationException,求大神解决,源代码如下。
报错的地方在这一句“intn=com.BytesToRead;”和“com.Read(buf,0,n);”,报错内容就是“ystem.InvalidOperationEx...
报错的地方在这一句“int n = com.BytesToRead;”和“com.Read(buf, 0, n);”,报错内容就是“
ystem.InvalidOperationException”。求大神帮忙。 展开
ystem.InvalidOperationException”。求大神帮忙。 展开
展开全部
你看看你的Com对象吧,已经不是你想要的COm对象了
改造方法一:
int n = com.BytesToRead
前面加一句
SerialPort com=Sender as SerialPort ;
int n = com.BytesToRead
.......
然后把你的
class Progam 后面的哪个全局SerialPort 对象去掉了!
改造方法二:
或者你把你man方法的中的对象传到Progam 类中也可以
Progam P=new Progam ();
P.com=com;
com.DataReceived+=P.com_DataReceived;
......
你必须保证你在使用的时候,前后的对象要一致!不然的话,你事件里面的COm都还没有实例话端口,波特率 等属性,肯定就报错了撒!!
改造方法一:
int n = com.BytesToRead
前面加一句
SerialPort com=Sender as SerialPort ;
int n = com.BytesToRead
.......
然后把你的
class Progam 后面的哪个全局SerialPort 对象去掉了!
改造方法二:
或者你把你man方法的中的对象传到Progam 类中也可以
Progam P=new Progam ();
P.com=com;
com.DataReceived+=P.com_DataReceived;
......
你必须保证你在使用的时候,前后的对象要一致!不然的话,你事件里面的COm都还没有实例话端口,波特率 等属性,肯定就报错了撒!!
展开全部
用固定长度的数组作为接收数组,不要用动态变化的n。
追问
我一次发送21个数据,我将n改成21,注释掉第一句,可是第二句还是会报同样的错误。这是怎么回事儿呀?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要给你写一份吗
追问
虽然有一些小问题,但是基本已经解决了,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询