none
在windows mobile利用藍芽傳輸 RRS feed

  • 問題

  • 小弟現在利用windows mobile
    透過藍芽連續接收外部Device傳輸的資料

    藍芽傳輸部份
    是利用SerialPort元件
    開啟COM Port傳輸
    在接收部份皆可收到資料
    但到工具管理員去看
    CPU使用率卻處於90%上下
    導致再處理其他事情的話會不順暢

    我有試過將所有接收後的處理拿掉
    就光只是serialport.open後
    CPU就高居不下

    想請問這樣是正常的嗎
    還是有其他方法改善其效能

    感謝!!!
    2010年9月9日 下午 04:13

解答

  • Hi,

    我想跟您確認的是打開Serialport(也就是下Open)之後,什麼都不做,這樣會不會讓CPU飆高,如果會,那可以考慮使用Opennetcf提供的類別來試試看,OpenNetCF也有提供Serialport元件可以供使用。

    如果單純Open不做任何事不會讓CPU飆高的話,那就可以朝程式碼這部分來檢查看看,收先是在接收資料的地方,看您程式的邏輯,如果是用類似Do..Lopp的方式來做,可以適度的加上Sleep(通常sleep 10 ms就能看出明顯差異)來釋放掉CPU的使用,這可以有效較低CPU使用率,這部分不論是裝置或是一般desktop上面開發時都是相同的。


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年9月10日 上午 10:39
    版主

所有回覆

  • Hi,

    您開一個全新的專案,就只拉一個Serialport元件出來,之後去監測看看,確認一下是不是元件的問題造成的


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年9月10日 上午 09:35
    版主
  • 你好,

    我有試過只用Serialport元件

    亦有此問題發生

     

    在Device端方面是不斷地透過藍芽送資料

    我在想是不是因為大量傳輸,手機不斷地接收所造成

    所以只要一打開serialport就會如此

     

    因為我試過利用藍芽和電腦連線

    電腦端利用終端機監看

    不送值時手機上的CPU沒什麼反應

    但電腦端開始手動連續送值時

    CPU就開始飆升至90%以上

    直到不送值後

    CPU才慢慢降下來

     

    這樣的狀況算正常嗎?

    感覺是在大量傳輸至手機端就會CPU高漲

    不知道有沒有什麼辦法改善

     

    感謝你的回覆!!!!

    2010年9月10日 上午 09:45
  • Hi,

    我想跟您確認的是打開Serialport(也就是下Open)之後,什麼都不做,這樣會不會讓CPU飆高,如果會,那可以考慮使用Opennetcf提供的類別來試試看,OpenNetCF也有提供Serialport元件可以供使用。

    如果單純Open不做任何事不會讓CPU飆高的話,那就可以朝程式碼這部分來檢查看看,收先是在接收資料的地方,看您程式的邏輯,如果是用類似Do..Lopp的方式來做,可以適度的加上Sleep(通常sleep 10 ms就能看出明顯差異)來釋放掉CPU的使用,這可以有效較低CPU使用率,這部分不論是裝置或是一般desktop上面開發時都是相同的。


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年9月10日 上午 10:39
    版主
  • 你好!!!

     

    感謝你的回覆!!!!

    我試的情況是如果Device有一直送值,那手機一開啟Serialport(open)即CPU上升

    若Device沒有送值,那手機開啟Serialport是沒影響的

    所以我一直認為是大量傳輸所造成之影響

     

    感謝你提供的方法,

    這兩種方法我會去嘗試看看

    給了我很好得方向

    謝謝!!!!

    2010年9月10日 上午 10:59