求助:读电子秤串口数据出错,被它搞晕了都,谢谢先-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 751|回复: 9

[未解决] 求助:读电子秤串口数据出错,被它搞晕了都,谢谢先

[复制链接]
发表于 2022-5-11 16:12 | 显示全部楼层 |阅读模式
环境:uno板pin10、pin11与电子秤DB9的23腿连接,另外接一款1602IIC液晶,IDE1.8.19电子秤数据格式:第四种,(对应3)连续串行输出纯数字加回车加换行 如X.XX


硬件连接是这样:

硬件连接

硬件连接

我的连接
厂家配的连接线

试验过程,
1、电子秤不称重,电子秤读数是0.00g,串口读到的是251,251,251,163,159,159,229,235,0,循环6次之后,就只读到251并且一直只能读到这个数;
2、再进行称量,电子秤读数187.65g,串口读到的就是235,143,145,163,147,147,229,235,0,循环6次之后,就只读到235并且一直只能读到这个数;
电子秤读数
串口调试监测

请问:
1、前面六组数据有规律证明出口有数据进来,而且电子秤一直在不停的重复发送数据,但是串口的数和电子秤显示的数据不相符,请问是什么原因呢?接RS232口需要电平转换吗?厂家说直接连235腿就可以了。
2、读了六次之后有规律的数据就读不到了,是因为uno板串口缓冲区溢出吗?如果溢出了,那每次读串口的时候要清零缓冲区吗?怎么清零缓冲区?

程序代码:
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

SoftwareSerial mySerial(10, 11); // 10=RX, 11=TX,和外设232的RX和TX的腿对接,也就是RX和RX接,TX和TX接
int incomingByte;int i=0;
int zero;
int incom[10];

void setup() {
  lcd.init();                      // initialize the lcd
  lcd.backlight();  
  Serial.begin(9600);
  mySerial.begin(9600);
  lcd.begin(16,2);   
  
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only  
  }
  Serial.println("Goodnight moon!");  
  // set the data rate for the SoftwareSerial port
  //mySerial.println("Hello, world?");
}

void loop() { // run over and over
  
  lcd.clear();  
   
  lcd.home();  
  lcd.setCursor(5,0);  
  lcd.print("Start");  
  Serial.println("start");
  delay(1000);
  lcd.clear();  
  lcd.home();
  
  mySerial.listen();  
  Serial.println("My");
  lcd.print("My");
  
  incomingByte=mySerial.read();  //读电子秤串口数据
  lcd.print(incomingByte);
  Serial.println(incomingByte);
  delay(1000);
  
  incomingByte=mySerial.read();
  lcd.setCursor(0,1);
  while (mySerial.available() ) {  //检测串口是否有数据
      
      lcd.print("Y");
      delay(1000);
      
      incomingByte=mySerial.read();  //读电子秤串口数据
      Serial.println(incomingByte);//调试串口显示电子秤串口读到的数据
      lcd.print(incomingByte);
      delay(1000);
      if(incomingByte==93){ //是否回车
          i=0;
          lcd.setCursor(0,0);  
          Serial.println("93N");
          Serial.println(incomingByte);
          lcd.print("S");
          lcd.print(incomingByte,DEC);//液晶显示93正确
          incomingByte=mySerial.read();
          if(incomingByte==13){  //是否换行
              incom=incomingByte;      
              Serial.println("13N");  //电脑串口监测调试用
              lcd.print("H");//开始显示电子秤串口数据)
              lcd.print(incom,DEC);
              incomingByte=mySerial.read();      
          }
          delay(10000);
          lcd.clear();
      }
   }
}

困扰好几天了,网上搜不到解决办法,请大家帮忙看看哪里出问题了,感谢!



厂家配连电脑的USB线

厂家配连电脑的USB线

程序调试串口监测读取到的电子秤的读数

程序调试串口监测读取到的电子秤的读数

电子秤

电子秤

rs232连接头

rs232连接头

串口监测显示

串口监测显示
发表于 2022-5-11 18:56 | 显示全部楼层
首先,你要示波器或者万用表确定一下电平, 12v 是 RS232, 5V  是 TTL

然后根据这个步骤选一个 USB 工具先看一下数值
发表于 2022-5-12 00:23 | 显示全部楼层
妥妥的232电平,现成产品不会傻傻给你配个 TTL 电平的。

先用 MAX232 转一下电平,然后再说串口接收数据的事情。
 楼主| 发表于 2022-5-12 15:19 | 显示全部楼层
Zoologist 发表于 2022-5-11 18:56
首先,你要示波器或者万用表确定一下电平, 12v 是 RS232, 5V  是 TTL

然后根据这个步骤选一个 USB 工具 ...

谢谢,我先电平转换一下,谢谢。
 楼主| 发表于 2022-5-12 15:20 | 显示全部楼层
t3486784401 发表于 2022-5-12 00:23
妥妥的232电平,现成产品不会傻傻给你配个 TTL 电平的。

先用 MAX232 转一下电平,然后再说串口接收数据的 ...

谢谢,我先电平转换一下,谢谢。
 楼主| 发表于 2022-5-13 16:45 | 显示全部楼层
t3486784401 发表于 2022-5-12 00:23
妥妥的232电平,现成产品不会傻傻给你配个 TTL 电平的。

先用 MAX232 转一下电平,然后再说串口接收数据的 ...

电平转换了,这次编程串口检测不到数据了,是不是板子烧了?用电子秤带的测试程序采集数据,电脑是可以采集的,说明电子秤串口没坏。换了一块wifiduino32板子也监测不到串口数据到。
发表于 2022-5-15 09:32 | 显示全部楼层
rdet97 发表于 2022-5-13 16:45
电平转换了,这次编程串口检测不到数据了,是不是板子烧了?用电子秤带的测试程序采集数据,电脑是可以采 ...

感觉更像是你电平转换没接对
 楼主| 发表于 2022-5-16 17:48 | 显示全部楼层
t3486784401 发表于 2022-5-15 09:32
感觉更像是你电平转换没接对

换了一块232转TTL电平的模块就ok啦,感谢哈
 楼主| 发表于 2022-5-16 17:49 | 显示全部楼层
Zoologist 发表于 2022-5-11 18:56
首先,你要示波器或者万用表确定一下电平, 12v 是 RS232, 5V  是 TTL

然后根据这个步骤选一个 USB 工具 ...

换了一块232转TTL转接头就搞定啦,感谢哈
发表于 2022-5-16 20:48 | 显示全部楼层
rdet97 发表于 2022-5-16 17:49
换了一块232转TTL转接头就搞定啦,感谢哈

恭喜噢~  不错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 05:34 , Processed in 0.160403 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表