急求解答,C#串口通讯的问题,如何在串口不关闭的情况下改变奇偶校验???

如题,我是用VS2010,用里面封装好的SerialPort类实现串口通讯,而且有个要求,假如我发送一个字节数组byte[]b=newbyte[]{0x01,0x03,0... 如题,我是用VS2010,用里面封装好的SerialPort类实现串口通讯,而且有个要求,假如我发送一个字节数组byte[] b = new byte[]{0x01,0x03,0x00,0x14,0x00,0x01,0x0E,0xC4};分两次发送,其中发送0x01的时候,奇偶校验设置为1(mark),代表地址,发送另外7的字节的时候奇偶校验设为0(space),代表数据。我是这样写的:
byte[] b = new byte[]{0x01,0x03,0x00,0x14,0x00,0x01,0x0E,0xC4};
SerialPort sp = new SerialPort("COM1",2400,Parity.Mark,8,StopBits.One);
sp.Open();
sp.Wirte(b,0,1);
sp.Close();
sp.Parity = Parity.Space;
sp.Open();
sp.Write(b,1,b.Length - 1);
这样写可以实现,但是中间改奇偶校验的时候必须把串口关掉,这样一关一开之间60多毫秒就浪费掉了,请高手解答一下,能不能在串口不关闭的前提下改变奇偶校验,有没有其他的方法节省这个时间啊???
展开
 我来答
miniappigO7dCrZySrL4
2011-12-29 · TA获得超过184个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:103万
展开全部
我没用C#做过串口程序,以前倒是经常写单片机里的串口通讯,我觉得奇偶校验是单片机或者上位机的程序里处理的东西,应该和串口本身没太大关系(就一个RS232电路),以前做动态改变奇偶校验的功能的时候,是和时钟线数据线结合起来做的,比如你把数据线拉高持续多少微秒,或者拉低多少微秒,然后上位机或者单片机接受到这种信号后,动态的执行某个不同的处理,处理奇偶校验的功能是在双方程序里写的。这样即使不用复位也能够让接收方即时的接收到改变奇偶校验的事件。 如果非得用C#开发,用C#的计时器或者sleep()试试,但前提是接收方设备或者上位机是可编程的。
lokily2010
2011-12-29 · TA获得超过284个赞
知道小有建树答主
回答量:776
采纳率:100%
帮助的人:586万
展开全部
c#的不知道,我的vc的程序,没有关闭打开,只是设置了校验继续发送数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式