久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2085|回復(fù): 4
收起左側(cè)

求助關(guān)于單片機串口與PYTHON上位機傳遞信息

[復(fù)制鏈接]
ID:889094 發(fā)表于 2021-5-2 21:56 | 顯示全部樓層 |閱讀模式
我的程序中PYTHON上位機通過串口發(fā)送數(shù)據(jù)給單片機,每次發(fā)送10行,每發(fā)送一行單片機會給上位機返回一個字符,上位機收到字符后發(fā)送下一行,10行發(fā)送完成后等待單片機處理完畢后,單片機會再發(fā)送一個字符給上位機,上位機繼續(xù)傳遞下10行數(shù)據(jù),如此循環(huán)至數(shù)據(jù)發(fā)送完成。
上位機代碼如下:
try:
  #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
  portx="COM7"
  #波特率,標(biāo)準(zhǔn)值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
  bps=115200
  #超時設(shè)置,None:永遠(yuǎn)等待操作,0為立即返回請求結(jié)果,其他值為等待超時時間(單位為秒)
  timex=5
  # 打開串口,并得到串口對象
  ser=serial.Serial(portx,bps,timeout=timex)
  # 寫數(shù)據(jù)到串口
  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'):#等待一行發(fā)送完成得到回應(yīng)A
      msg=ser.read(1)
    if(j ==10 ):
      print("%d條代碼發(fā)送完,正在處理"%(i+1))
      while(msg!=b'B'):#發(fā)完10行等待再次發(fā)送的指令B
        msg=ser.read(1)
        j=0
        
  ser.write('$'.encode('UTF-8'))#寫完完畢,發(fā)結(jié)束信號
  print("傳送完成完畢")  
  ser.close()#關(guān)閉串口
單片機串口接收程序如下:
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;//開始執(zhí)行
    }
   }
   if(SBUF=='$')//傳送結(jié)束標(biāo)志
   {
    recbuf[compos][recpos]=0;
    recf=0;//暫停接收
    wrif=1;//開始執(zhí)行
   }
   RI=0;
  }
}
下面是主函數(shù)while循環(huán)中的處理完10行返回一個字符給上位機
4.jpg
下面是問題:
每次單片機運行開始,等待上位機傳遞數(shù)據(jù)。每次傳送不一定成功,偶爾會出現(xiàn)只傳送2行就卡住不動了,單片機復(fù)位或重啟,再重新傳送才能成功。
不是每次都出現(xiàn),有時出現(xiàn)有時不出現(xiàn),故障率30%左右,自查沒找到原因,求教大佬,謝謝
回復(fù)

使用道具 舉報

ID:889094 發(fā)表于 2021-5-2 21:57 | 顯示全部樓層
單片機用的是獨立波特率發(fā)生器
void uart1_init()//使用獨立波特率發(fā)生器
{
        SCON=0x50; //[bit6:5]SM1 SM2 = 1 0;[bit4]REN=1
  AUXR=0x15; //[bit4]BRTR=1,允許獨立波特率發(fā)生器運行;[bit0]SIBRS=1,獨立波特率作為串口1的波特率發(fā)生器,此時定時器1釋放,[bit2]BRT*12=1,工作在1T
        BRT=0XFD;   //獨特波特率發(fā)生器定時器(產(chǎn)生波特率9600*12=115200)
        EA=1;           //開啟總中斷
        ES=1;
}

回復(fù)

使用道具 舉報

ID:889094 發(fā)表于 2021-5-2 21:58 | 顯示全部樓層
與上位機的通信是否有好的方法?我都是一個人在家里閉門造車,請大佬們指路
回復(fù)

使用道具 舉報

ID:889094 發(fā)表于 2021-5-5 22:02 | 顯示全部樓層
自己頂一下,大佬們有時間給點建議
回復(fù)

使用道具 舉報

ID:885797 發(fā)表于 2022-6-9 21:22 | 顯示全部樓層
請問題主有用pythonmodbus協(xié)議通訊相關(guān)的經(jīng)驗嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区视频在线观看 | 中文字幕一区二区三区四区 | 伊人狼人影院 | www.五月婷婷.com | 国产亚洲欧美在线 | www国产精品 | 精品国产99 | 久久精品视频免费看 | 久久久久久免费毛片精品 | 成人欧美一区二区三区黑人孕妇 | 91网站在线播放 | 国产精品99久久久久久动医院 | 2019天天干天天操 | 九九热这里只有精品在线观看 | 亚洲高清在线 | 成人免费看片又大又黄 | 午夜精品一区二区三区在线观看 | 一区二区三区四区免费在线观看 | 性高湖久久久久久久久3小时 | 国产在线视频在线观看 | 欧美一区二 | 日韩欧美在线播放 | 久草青青 | 亚洲一区二区精品视频 | 国产精品久久久久久久久久软件 | 亚洲一区在线日韩在线深爱 | 99精品欧美 | 91精品久久久久久久久久 | 色综合视频在线 | 免费久久网 | 99精品视频一区二区三区 | 亚洲欧洲av在线 | 国产乱码精品一区二区三区中文 | 91精品国产麻豆 | 三级视频在线观看 | 国产精品亚洲二区 | 久操亚洲 | 91精品国产一区二区三区 | 成人免费大片黄在线播放 | 国产99热| 久久91av|