c#控制台程序,串口通信运行报错System.InvalidOperationException,求大神解决,源代码如下。

报错的地方在这一句“intn=com.BytesToRead;”和“com.Read(buf,0,n);”,报错内容就是“ystem.InvalidOperationEx... 报错的地方在这一句“int n = com.BytesToRead;”和“com.Read(buf, 0, n);”,报错内容就是“
ystem.InvalidOperationException”。求大神帮忙。
展开
 我来答
百度网友ce7f3ccb4
2015-04-01 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1911万
展开全部
你看看你的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都还没有实例话端口,波特率 等属性,肯定就报错了撒!!
渠端静W0
2015-03-31 · TA获得超过187个赞
知道小有建树答主
回答量:290
采纳率:75%
帮助的人:207万
展开全部
用固定长度的数组作为接收数组,不要用动态变化的n。
追问
我一次发送21个数据,我将n改成21,注释掉第一句,可是第二句还是会报同样的错误。这是怎么回事儿呀?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2015-03-31 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4972万
展开全部
需要给你写一份吗
追问
虽然有一些小问题,但是基本已经解决了,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式