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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2047|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
我的程序中PYTHON上位機(jī)通過(guò)串口發(fā)送數(shù)據(jù)給單片機(jī),每次發(fā)送10行,每發(fā)送一行單片機(jī)會(huì)給上位機(jī)返回一個(gè)字符,上位機(jī)收到字符后發(fā)送下一行,10行發(fā)送完成后等待單片機(jī)處理完畢后,單片機(jī)會(huì)再發(fā)送一個(gè)字符給上位機(jī),上位機(jī)繼續(xù)傳遞下10行數(shù)據(jù),如此循環(huán)至數(shù)據(jù)發(fā)送完成。
上位機(jī)代碼如下:
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í)設(shè)置,None:永遠(yuǎn)等待操作,0為立即返回請(qǐng)求結(jié)果,其他值為等待超時(shí)時(shí)間(單位為秒)
  timex=5
  # 打開(kāi)串口,并得到串口對(duì)象
  ser=serial.Serial(portx,bps,timeout=timex)
  # 寫(xiě)數(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'))#寫(xiě)完完畢,發(fā)結(jié)束信號(hào)
  print("傳送完成完畢")  
  ser.close()#關(guān)閉串口
單片機(jī)串口接收程序如下:
if(RI)
{
  if(recf==1)//接收g指令
  {
   if(SBUF)
   {
    recbuf[compos][recpos]=SBUF;
    recpos++;
   }
   if(SBUF=='\n')
   {
    compos++;
    recpos=0;
    SBUF='A';//收完一行返回一個(gè)A
    while(!TI)
     TI=0;
    if(compos==10)
    {
     recf=0;//暫停接收
     wrif=1;//開(kāi)始執(zhí)行
    }
   }
   if(SBUF=='$')//傳送結(jié)束標(biāo)志
   {
    recbuf[compos][recpos]=0;
    recf=0;//暫停接收
    wrif=1;//開(kāi)始執(zhí)行
   }
   RI=0;
  }
}
下面是主函數(shù)while循環(huán)中的處理完10行返回一個(gè)字符給上位機(jī)

下面是問(wèn)題:
每次單片機(jī)運(yùn)行開(kāi)始,等待上位機(jī)傳遞數(shù)據(jù)。每次傳送不一定成功,偶爾會(huì)出現(xiàn)只傳送2行就卡住不動(dòng)了,單片機(jī)復(fù)位或重啟,再重新傳送才能成功。
不是每次都出現(xiàn),有時(shí)出現(xiàn)有時(shí)不出現(xiàn),故障率30%左右,自查沒(méi)找到原因,求教大佬,謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

回復(fù)

使用道具 舉報(bào)

板凳
ID:889094 發(fā)表于 2021-5-2 21:58 | 只看該作者
與上位機(jī)的通信是否有好的方法?我都是一個(gè)人在家里閉門(mén)造車(chē),請(qǐng)大佬們指路
回復(fù)

使用道具 舉報(bào)

地板
ID:889094 發(fā)表于 2021-5-5 22:02 | 只看該作者
自己頂一下,大佬們有時(shí)間給點(diǎn)建議
回復(fù)

使用道具 舉報(bào)

5#
ID:885797 發(fā)表于 2022-6-9 21:22 | 只看該作者
請(qǐng)問(wèn)題主有用pythonmodbus協(xié)議通訊相關(guān)的經(jīng)驗(yàn)嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91一区二区三区 | 91精品国产91久久久久久吃药 | 日韩成人在线播放 | 麻豆精品国产91久久久久久 | 国产精品亚洲综合 | 日韩欧美二区 | 亚洲国产一区二区三区在线观看 | 久久国产欧美日韩精品 | 综合精品在线 | 理论片87福利理论电影 | 色综合网站| 黄色成人av | 午夜激情在线 | 中文成人无字幕乱码精品 | av免费在线观看网站 | 国产精品高潮呻吟久久aⅴ码 | 秋霞影院一区二区 | 亚洲一区二区在线 | 91人人视频在线观看 | 日韩免费视频 | 国产成人网 | 国产精品成人av | 久久久国产一区二区三区四区小说 | 麻豆va | 国产不卡在线观看 | 色视频网站免费 | 99精品99久久久久久宅男 | 欧美视频在线播放 | 夜夜骑天天干 | 天天综合国产 | 天天综合网7799精品 | 91免费看片| 国产7777| 欧美 日韩 中文 | 日韩精品视频在线播放 | 亚洲国产偷 | 瑟瑟免费视频 | 拍真实国产伦偷精品 | 欧美偷偷 | 日本三级电影免费观看 | 日本精品免费 |