MYF 发表于 2011-3-9 19:11:01

请教:关于串口一次接收2个字节的问题。

问题1:
在编程中我要实现cpuview和labview之间的数据传递,我需要用到2个通道(由labview控制),两个输出(不同通道的AD值);
出现的问题是,数据返回正常,但是串口1和串口2只由visa写入2决定,

labview中我的编程是 初始化—visa写入1—visa写入2—visa读取—visa读取—visa关闭
cpuview中的编程是中断开始——中断处理开始——读取一字节(选择串口1)——读取一字节(选择串口2)——中断处理结束——中断结束
如果用两个中断的不能生成hex,

问题2:
十六进制到字符的转换问题。
3.1的电压示波器例程中那两个串口发送数据:
(uchar)(变量>>2)
(uchar)(变量&0x03)
据说是拆分变量发送到电脑上再整合用的,貌似是十六进制到字符的转换问题,。。
但其中的换算方法我百思不得其解,假设变量x=12345,左移2位1234500,保留2位有效数字1200000,为什么这么算呢?这个问题也困扰我很久了,还有就是配套labview程序中的公式:变量|=(y&0x03),这一步也看不懂,
这2个问题纠结我一下午了啊,我是个菜鸟,很喜欢cpuview和labview的编程方式,各位大侠们帮帮忙啊!!!非常感谢!!

cpubbs 发表于 2011-3-9 20:31:03

本帖最后由 cpubbs 于 2011-3-9 20:31 编辑

1,如果用两个中断的不能生成hex

咱们板上面只有一个串口的,所以库中也只做了一个串口的库,没有做另一个的,所以不能重复!

2,它自动转换成了十六进制再移动,但这个被移动的数自身并没有改变,只是将它的改变到内存中,然后再放到其他变量中,所以它自身并没有真实改变,就不会出现您所说的问题了!

MYF 发表于 2011-3-10 10:57:16

回复 cpubbs 的帖子

如果我要实现,一个串口中断中读取两次作为变量呢?
比如:
中断开始——中断处理开始——串口读取一字节(ADchannel1)——串口读取一字节(ADchannel2)——中断处理结束——中断结束
我用问题一中的方法,ADchannel1和ADchannel的值只有 visa写入2决定。。。二我需要用到两个不同的串口读取AD值。。

MYF 发表于 2011-3-10 12:38:45

问题解决了,方案其实很简单在中断过程中加个if else结构判断读取的串口就可以了,感谢版主的指导!!
页: [1]
查看完整版本: 请教:关于串口一次接收2个字节的问题。