2008年11月27日 星期四

USB 裝置的主從控制想法

這的議題是因為我今年主要的一個USB應用程式的成形讓我覺得USB DIY應用更上一層樓,

而這樣子觀念我個人覺得是可以延伸到其他應用領域:譬如PC 應用程式之機器人伺服馬達的即時控制。

然後,因為好友林老師他今年要玩機器人控制時,個人的一個小小意見:

http://chipware.myvnc.com/phpbb/viewtopic.php?p=1036#1036

或許大家會覺得這樣子的東西應該跟一般HID 有點像喔...

一般所謂的 回饋式的遊戲搖桿是這一種嗎?!....

我個人覺得應該還有一些不一樣...

第一:回饋是搖桿的PC 主控控制單元不多...只有一個直流馬達而已也不需做到精準的時間控制...

等您要控制的馬達多一點,而且是要作定位控制的!(USB DEVICE回傳多...下傳接收不多!)

第二:當您利用HID 把資料回傳PC 端時,您的上層的應用程式才會知道,

然後,再重新利用應用程式把更新資料在重新往下傳到OS 的驅動程式端....

在傳出時,您有可能要跟其他PC正在執行的其他應用程式搶作業系統的資源時,

發生時快時慢的時間間隔(就算是用常駐程式寫,也是一樣的!)。

-----

或許大家有更好的方法,我也不敢說我的方法最好。但畢竟我把他給實現了。

所以,我就可以把機器人調伺服馬達動作(就是要調整機器人整體動作!)

可以在PC 端即時的設定動作...然後可以完成預覽-->設定--->下載儲存--->脫機

--->完成機器人自行調整各個伺服馬達動作完成一連串動作!

就如同我在USB2DMX 的操作影片流程一般。

(謝謝影片中,連我那個念小學的兒子也可以輕鬆上手操作這樣子的軟體設定。

這不就是我們希望玩機器人可以普及化的想法嗎?!)

或許大家可以提出想法討論!...謝謝!...

-----------------------------------------------------------------------------------

原文的說明如下:

http://chipware.myvnc.com/phpbb/viewtopic.php?p=1036#1036

-----
我想這個東西有點像我今年寫的一個程式:USB2DMX...

http://www.youtube.com/watch?v=BcpXkgfyoJo

...
我稍微提一下這樣子的程式觀念:
主要就是所提到的如何利用程式中的『滑桿』的動作能做到Real time 控制Device 端的動作---原來的我LED應用中就是LED 節目與速度的改變!而若是伺服馬達的話,就是伺服馬達的作動。
這樣子的控制流程的最大問題是:明明是由PC程式端來下達Device 端動作的改變;但是呢?在時間控制軸上來說:應該由Device 來決定動作的改變。...
因為LED 什麼時候完成PC指定動作,可以在接受下一個PC指定動作。
(伺服馬達什麼時候完成PC指定動作,可以在接受下一個PC指定動作。)
只有Device自己最清楚的...否則,在時間控制上會亂了章法的...
會讓LED 跑起來時快時慢(伺服馬達也會一下子正轉...還沒定位又要反轉...)
----
而以目前PC 端的應用程式對於周邊裝置的驅動程式來說,
是很難精準的做到時間間隔一致---除非您要寫一支常駐程式。
(以現在龐大的視窗作業系統來說,常駐程式真的不容易寫也不容易維護的!
也容易發生掛平台兼容性問題!)
那更不說想用VB 來寫這種程式啦....(譬如利用VB +RS232 來寫!)
--
我當初唯一能想到的就是USB還有機會...
但又一定要USB Device 的Firmware 的強力支持,
在搭配PC 端的應用程式與底層驅動程式的相互搭配才有機會完成。
因為畢竟只有在Device 端才能精準的時間控制...
because 在Device 端的Firmware 只有服務本身功能,不像PC 作業系統這麼複雜。
而以USB裝置來說:明明USB裝置是一種被動的周邊裝置(以主從觀念來說!)
怎麼又可以做到USB 裝置來主控與PC 端應用程式之間的即時資料交換呢?!
---
這個就是我所要說的:如何利用USB Device 的Firmware 搭配USB
驅動程式與PC上層應用程式端的交互整合才可以完成這樣子的觀念。
---
其實,當初這個觀念在我動手作這樣子的系統規劃時,我自己也沒有把握可以完成?因為真的不容易達成的....但事實證明我的想法沒錯的!
所以就完成了這一組 USB2DMX的系統設計。
我想同樣的觀念是可以延伸到利用PC應用程式做到這種伺服馬達的即時(Real-time) 控制的!
---
個人的小小意見!

沒有留言:

張貼留言