|
想要用Arduino采集天平的数据,然后实现反馈调节控制,但是在采集数据这一步就出现问题了。
天平是Sartorius BSA2202 通讯接口是RS232,波特率1200,7位数据位,偶校验,2位停止位,更详细的接口定义在附件里
用 MAX 3232 一端接天平,另一端RX、TX交叉接到Uno板子上,MAX 3232板子上的vcc接Uno的5v,GND对接。写入下面的程序: - void setup()
- {
- Serial.begin(1200,SERIAL_7E2);
- }
- void loop()
- {
- if(Serial.available())
- {Serial.write(Serial.read());
- }
- }
复制代码
Uno没有反应,Rx、Tx灯不亮,USB线连接电脑,串口监视器没有数据传回
用RS232线直接将天平与电脑连接,用串口调试工具检测信号,设置波特率1200,数据位7,偶校验,停止位2,能够接收到天平传过来的数据
将MAX3232 插入电脑的RS232-DB9接口,MAX3232与Uno的连接和上面一样,程序也不变。打开两个端口(与MAX3232 连接的RS232端口,及与Uno直接连接的USB端口)的串监视器(波特率都选择1200),Uno能够接受RS232 端口传出的信号,并且在USB端口的监视器上也能够显示。
我考虑过是不是用一对串行通讯端口同时实现和天平及电脑之间的通讯会有问题,于是,找到了SoftwareSerial.h。
然后将MAX 3232的Tx接到Uno的8,Rx接到Uno的9,写入下面程序: - #include<SoftwareSerial.h>
- SoftwareSerial my(8,9);
- void setup()
- {
- my.begin(1200);
- Serial.begin(1200);
- }
- void loop()
- {
- if(my.available())
- Serial.write(my.read());
- if(Serial.available())
- my.write(Serial.read());
- }
复制代码
发现软串口貌似不能设置校验位,数据位,停止位。
然后,结果一样,这样设置能够接收电脑RS232端口的数据,传回至USB端口,Tx端口闪烁,开两个串口监视器能够互相传数据。
但是连接到天平后还是一样,接收不到信号,Uno上的Tx、Rx不闪烁,电脑上串口监视器没有信号
哪位大侠给指点一下啊,感激不尽啊! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|