欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2354|回復: 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 單片機教程網

快速回復 返回頂部 返回列表