激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月


主題:請(qǐng)幫忙分析一下

  共有45821人關(guān)注過(guò)本帖    
linman
1樓


請(qǐng)幫忙分析一下  發(fā)帖心情 Post By:2009-9-3 15:38:00   [只看該作者]

c#程序中設(shè)置了兩個(gè)線程,一個(gè)是CAN接收線程,一個(gè)是數(shù)據(jù)解析線程,它們公用一個(gè)buffer,接收線程等待數(shù)據(jù)進(jìn)來(lái)就放入buffer,解析線程以5ms為周期從buffer中讀數(shù)進(jìn)行解析;當(dāng)以5ms為周期或更快速度發(fā)送數(shù)據(jù)時(shí),從解析線程中讀這個(gè)buffer中的數(shù)據(jù)就不對(duì)了,比如連續(xù)發(fā)了id為0 、1、2的CAN數(shù)據(jù),解析線程讀到的ID有可能是0、1、1,為什么會(huì)發(fā)生這種現(xiàn)象??jī)蓚(gè)線程優(yōu)先級(jí)都是abovenormal。

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
lqk
2樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2009-9-3 16:04:00   [只看該作者]

當(dāng)以5ms為周期或更快速度發(fā)送數(shù)據(jù)時(shí),CAN接收線程將以5ms或更快的速度刷新你的buffer,而你的數(shù)據(jù)解析線程以5ms為周期工作,這樣有數(shù)據(jù)就會(huì)丟失或出錯(cuò)
建議在CAN接收線程中用一環(huán)形buffer緩存收到的數(shù)據(jù)。

  單帖管理 | 引用 | 回復(fù) 回到頂部
linman
3樓


  發(fā)帖心情 Post By:2009-9-3 16:26:00   [只看該作者]

可是如果解析的線程不讀走buffer中的數(shù)據(jù),buffer不會(huì)被清阿?難道向buffer中添加新的數(shù)據(jù)會(huì)把以前的沖掉嗎?為什么環(huán)形buffer能解決問(wèn)題呢?

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
lqk
4樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2009-9-3 17:10:00   [只看該作者]

在接收線程中,只要收到一幀數(shù)據(jù)就放入環(huán)形buffer中
在解析線程中解析環(huán)形buffer中的數(shù)據(jù),一直將buffer中的數(shù)據(jù)讀空為止,對(duì)環(huán)buf操作時(shí)要注意線程同步.

  單帖管理 | 引用 | 回復(fù) 回到頂部
linman
5樓


  發(fā)帖心情 Post By:2009-9-3 18:12:00   [只看該作者]

我用的buffer是個(gè)ArrayList,接收線程只要收到數(shù)據(jù)就添加到ArrayList中,解析線程每次獲得ArrayList中的所有元素進(jìn)行解析,然后清空,在對(duì)ArrayList進(jìn)行添加和遍歷時(shí)用Mutex進(jìn)行同步,這樣有問(wèn)題嗎?

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
lqk
6樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2009-9-4 9:22:00   [只看該作者]

你的同步是不是在解析線程解析數(shù)據(jù)時(shí),接收線程就不能向ArrayList添加數(shù)據(jù)了.我覺(jué)得這是根你兩個(gè)線程的配合有關(guān)系。

  單帖管理 | 引用 | 回復(fù) 回到頂部
linman
7樓


  發(fā)帖心情 Post By:2009-9-4 9:49:00   [只看該作者]

對(duì),解析時(shí)不能添加,添加時(shí)解析也不能訪問(wèn),就是兩個(gè)線程在使用buffer時(shí)都先waitone(),使用后再ReleaseMutex(),請(qǐng)教應(yīng)該怎么配合呢

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
lqk
8樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2009-9-4 10:49:00   [只看該作者]


數(shù)據(jù)接收線程:
bResult = CAN_GetNextReceivedFrame( ceCAN->m_hCAN, &ceCAN->RxMFrame );
if( bResult )
{
    memcpy( ceCAN->ReceiveBuf[ceCAN->m_bufPutIdx], &ceCAN->RxMFrame, 13 );
    ceCAN->m_bufPutIdx = ( ceCAN->m_bufPutIdx+1 )% BUF_MAX;
}

數(shù)據(jù)解析線程:
    while( m_bufGetIdx != m_bufPutIdx )
    {
        memcpy( buf, ReceiveBuf[m_bufGetIdx], i );
        //數(shù)據(jù)解析
        m_bufGetIdx = (m_bufGetIdx+1) % BUF_MAX;
    }

兩線程不需要同步

  單帖管理 | 引用 | 回復(fù) 回到頂部
linman
9樓


  發(fā)帖心情 Post By:2009-9-4 13:24:00   [只看該作者]

謝謝您的回復(fù) ,主要我不明白為什么會(huì)發(fā)生這種現(xiàn)象?用環(huán)形為什么就能解決?另外,C#的話(huà)我要怎么構(gòu)造呢?

  單帖管理 | 引用 | 回復(fù) 回到頂部
linman
10樓


  發(fā)帖心情 Post By:2009-9-4 13:43:00   [只看該作者]

是否需要一個(gè)標(biāo)志用于同步兩個(gè)線程,是因?yàn)闆](méi)有做這個(gè)同步處理才導(dǎo)致發(fā)生這種現(xiàn)象嗎?

  單帖管理 | 引用 | 回復(fù) 回到頂部
qjh2008
11樓


  發(fā)帖心情 Post By:2009-9-8 14:54:00   [只看該作者]

使用serialport控件很好用的

  單帖管理 | 引用 | 回復(fù) 回到頂部
zhl
12樓


  發(fā)帖心情 Post By:2009-9-8 16:48:00   [只看該作者]

兩個(gè)不同的線程使用了一個(gè)數(shù)據(jù)區(qū),應(yīng)用程序中是需要加以保護(hù)的。

  單帖管理 | 引用 | 回復(fù) 回到頂部

返回首頁(yè)

請(qǐng)幫忙分析一下

用戶(hù)名:
            驗(yàn)證碼: 驗(yàn)證碼,看不清楚?請(qǐng)點(diǎn)擊刷新驗(yàn)證碼
內(nèi)容:
主站蜘蛛池模板: 一级特黄特交牲大片| 亚洲人成网站在线播放观看| 尤物视频www| 日韩在线观看一区| 中文字幕日韩专区| 欧美日韩在线视频不卡一区二区三区| 高清免费毛片| 爽的毛片| 黄色激情网站| 涩涩一区| 视频福利网| 2022在线精品视频网站| 久久婷婷色综合老司机| 午夜在线亚洲男人午在线| 亚洲好色网| 婷婷综合在线观看丁香| 91中文在线| 一区二区三区在线播放| wwww欧美| 久久免费激情视频| 一级做a爰片久久毛片毛片| xxx视频在线观看免费| 91福利一区二区在线观看| 人成xxxwww免费视频| 日韩亚洲人成在线综合日本| 日韩丝袜在线观看| 久久青草精品免费资源站| 一级女性黄色生活片| 日本aaaa级| 一级特黄aaa大片免色| 91频视| 亚洲欧美一区二区三区在线播放| 一级特黄性生活大片免费观看| 一区二区在线播放福利视频| 49pao强力在线高清基地| 999久爱视频在线观看| 一级美女片| 片在线观看| 婷婷丁香综合| 久久一本一区二区三区| 麻豆国产精品|