找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1755|回复: 4
打印 上一主题 下一主题
收起左侧

求助关于单片机串口与PYTHON上位机传递信息

[复制链接]
跳转到指定楼层
楼主
我的程序中PYTHON上位机通过串口发送数据给单片机,每次发送10行,每发送一行单片机会给上位机返回一个字符,上位机收到字符后发送下一行,10行发送完成后等待单片机处理完毕后,单片机会再发送一个字符给上位机,上位机继续传递下10行数据,如此循环至数据发送完成。
上位机代码如下:
try:
  #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
  portx="COM7"
  #波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
  bps=115200
  #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
  timex=5
  # 打开串口,并得到串口对象
  ser=serial.Serial(portx,bps,timeout=timex)
  # 写数据到串口
  j=0
  for i in range(len(data1)):
    j=j+1
    print(data1[ i],end="")
    ser.write(data1[ i].encode('UTF-8'))
    msg=ser.read(1)
    while(msg!=b'A'):#等待一行发送完成得到回应A
      msg=ser.read(1)
    if(j ==10 ):
      print("%d条代码发送完,正在处理"%(i+1))
      while(msg!=b'B'):#发完10行等待再次发送的指令B
        msg=ser.read(1)
        j=0
        
  ser.write('$'.encode('UTF-8'))#写完完毕,发结束信号
  print("传送完成完毕")  
  ser.close()#关闭串口
单片机串口接收程序如下:
if(RI)
{
  if(recf==1)//接收g指令
  {
   if(SBUF)
   {
    recbuf[compos][recpos]=SBUF;
    recpos++;
   }
   if(SBUF=='\n')
   {
    compos++;
    recpos=0;
    SBUF='A';//收完一行返回一个A
    while(!TI)
     TI=0;
    if(compos==10)
    {
     recf=0;//暂停接收
     wrif=1;//开始执行
    }
   }
   if(SBUF=='$')//传送结束标志
   {
    recbuf[compos][recpos]=0;
    recf=0;//暂停接收
    wrif=1;//开始执行
   }
   RI=0;
  }
}
下面是主函数while循环中的处理完10行返回一个字符给上位机

下面是问题:
每次单片机运行开始,等待上位机传递数据。每次传送不一定成功,偶尔会出现只传送2行就卡住不动了,单片机复位或重启,再重新传送才能成功。
不是每次都出现,有时出现有时不出现,故障率30%左右,自查没找到原因,求教大佬,谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:889094 发表于 2021-5-2 21:57 | 只看该作者
单片机用的是独立波特率发生器
void uart1_init()//使用独立波特率发生器
{
        SCON=0x50; //[bit6:5]SM1 SM2 = 1 0;[bit4]REN=1
  AUXR=0x15; //[bit4]BRTR=1,允许独立波特率发生器运行;[bit0]SIBRS=1,独立波特率作为串口1的波特率发生器,此时定时器1释放,[bit2]BRT*12=1,工作在1T
        BRT=0XFD;   //独特波特率发生器定时器(产生波特率9600*12=115200)
        EA=1;           //开启总中断
        ES=1;
}

回复

使用道具 举报

板凳
ID:889094 发表于 2021-5-2 21:58 | 只看该作者
与上位机的通信是否有好的方法?我都是一个人在家里闭门造车,请大佬们指路
回复

使用道具 举报

地板
ID:889094 发表于 2021-5-5 22:02 | 只看该作者
自己顶一下,大佬们有时间给点建议
回复

使用道具 举报

5#
ID:885797 发表于 2022-6-9 21:22 | 只看该作者
请问题主有用pythonmodbus协议通讯相关的经验吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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