Roboard 的 GPIO for .NET
請問一下在vb .net中gpio要怎麼使用,需要初始化嗎
RoBoIO_DotNet.RoBoIO.io_outpb
RoBoIO_DotNet.RoBoIO.io_outpdw
RoBoIO_DotNet.RoBoIO.io_outpw
RoBoIO_DotNet.RoBoIO.io_InUse
RoBoIO_DotNet.RoBoIO.io_CpuID
RoBoIO_DotNet.RoBoIO.io_inpb()
RoBoIO_DotNet.RoBoIO.io_inpdw
RoBoIO_DotNet.RoBoIO.io_inpw
RoBoIO_DotNet.RoBoIO.io_close()
這些方法有沒有文件可以看?或是直接跟我說怎麼用?謝謝 是的
要經過初始化, 流程如下
1. 先呼叫RoBoIO.rcservo_SetRBVer(RoBoIO.RB_100);
2. RoBoIO.rcservo_Initialize(RoBoIO.RCSERVO_USECHANNEL0 +
RoBoIO.RCSERVO_USECHANNEL1);
3. 上面用到的channel會轉換成PWM channel, 其他的是GPIO(也就是
channel 2 ~ 23都是GPIO), 然後就可以用
rcservo_Outp(channel , 0/1)和rcservo_Inp(channel) 函數了
例如 : rcservo_Outp(2, 1) -> channel 2 為high
rcservo_Outp(2, 0) -> channel 2 為low
rcservo_INp(3) -> 讀取channel 3是 high 或是 low
最後記得rcservo_Close 就OK了 我的做法是
在vb.net將RoBoIO_DotNet.dll加入參考
然後將WinIo.dll,WinIo.sys,WINIO.VXD
copy到 roboard 上的 c:\windows\system32\
然後在程式裡寫
RoBoIO.roboio_SetRBVer(RoBoIO_DotNet.RoBoIO.RB_100)
RoBoIO.rcservo_Initialize(RoBoIO.RCSERVO_USECHANNEL0)
然後就執行時,就會失敗,不知為何? 失敗的訊息為何呢?!
我執行是可以的
但是我DLL都放到程式的同一目錄 失敗訊息是看不到,就出現一個視窗說錯誤
也沒說是什麼錯誤,但是我只要mark有關的
roboard程式碼,就可以執行~~ 咦?
忽然發現
你的RoBoIO.dll ??
這也要進去喔 Hi
請問你的RoBoard上有安裝.NET FrameWork 2.0 和
VC2008 SP1 Redistributable Package 嗎? 我裝.NET FrameWork 2.0 就能跑囉
我是跑XPE的環境 後來可以了,不過,好像執行後high ,low好像都沒有發生
之前是在vc++是可以用,現在.net好像就不行。
真奇怪 我在.net 寫了這樣的code,發現,初始化就失敗了,請問有大大可以指點嗎?
謝謝。
RoBoIO.roboio_SetRBVer(RoBoIO.RB_100)
RoBoIO.rcservo_SetServo(0, RoBoIO.RCSERVO_SERVO_DEFAULT_NOFB)
If RoBoIO.rcservo_Initialize(RoBoIO.RCSERVO_USECHANNEL0) = False Then
Me.Label1.Text = "rcservo_Initialize failed!!!"
Else
Me.Label1.Text = "rcservo_Initialize succeesed!!!"
End If
RoBoIO.rcservo_EnterPWMMode() 失敗?
前兩行能執行應該roboard的函式庫都有正確加入了
是說If RoBoIO.rcservo_Initialize(RoBoIO.RCSERVO_USECHANNEL0) = False
這個條件是false 嗎?
你給roboard的電壓是多少呢?
這好奇怪
前面的初始化真的就是這幾行而已居然失敗
你要不要看能不能找機會去參加安東尼辦的免費課程活動,實際去那邊測試看看呢
因為前面這部分我自己測試是都會初始化成功
不太曉得你會失敗的原因在哪裡
而且測試的時候馬達不一定需要裝
我測試中隨便把馬達插插拔拔也是都可以正常動喔
目前測試過的電壓範圍從5~24V都有測試過(24V我是接祥儀的馬達來測的,轉很快喔, 哈哈)
不過5V已經接近roboard極限低壓, 馬達只能插一顆, 而且要單獨供電
不然一動馬達, roboard會直接重開 我是接7.4v的電池,之前用vc++是可以動的。
現在移到.net就不行,不知道我還少什麼東西? 是不是 winio之類的
對了,m大你的直接接馬達成功了嗎?我覺得用com去送命令有點慢,所以也想改成直接接pwm 我之前不是在哪篇文章裡面就說過我已經可以隨便動嗎?!
只是用6V電源會不穩而已, 因為很接近roboard極限
馬達一動, 電壓會被拉下來導致roboard重開或是不穩
現在接11.8V, +祥儀的馬達
隨便動都很OK
24軸一起上...然後roboard會很燙, 哈哈, 只好加小風扇幫忙散熱^^
反正操壞了有教授會幫忙出維修費, 就勇敢的操下去了
初始化的動作就是你不會跑的那三行而已
所以我才說你該想辦法去參加DMP的研習營
看看到底是怎麼回事喔
roboard控制PWM真的是神奇的力量的展現啊, 又快又準
而且程式又簡單到不可思議咧 Initialize 會 false 那邊, 你可以試著用 roboio_GetErrMsg()
來看看 false 的原因... 本帖最後由 miaoichi 於 2010-7-5 23:42 編輯
他寫說
I/O library fails to initialize 你是不是把接線的照片直接寄給我看看比較快啊 本帖最後由 miaoichi 於 2010-7-6 09:38 編輯
找到原因了~~~
已經可以動了。
謝謝m大與a大的協助
不過發現
RoBoIO.rcservo_Outp(RoBoIO.RCSERVO_USECHANNEL15, 1) 不等於RoBoIO.rcservo_Outp(16, 1) miaoichi 大大,
什麼樣的原因, 分享一下,
讓我也學習學習 ~"~ 本帖最後由 miaoichi 於 2010-7-6 14:01 編輯
如a大所說的,可以看失敗的原因
-----------------------------------------------------------------------------
Initialize 會 false 那邊, 你可以試著用 roboio_GetErrMsg()
來看看 false 的原因...
-----------------------------------------------------------------------------
後來才發現原來用.net與vc++不同處
就是在vb.net將RoBoIO_DotNet.dll加入參考後
將WinIo.dll,WinIo.sys,WINIO.VXD,RoBoIo.dll copy到同一目錄下,就可以運作
而RoBoIO.rcservo_Outp(RoBoIO.RCSERVO_USECHANNEL15, 1) 不等於RoBoIO.rcservo_Outp(16, 1)
也是因為 資料type(bit wise的issue)的不同 ,所以在vc++ 用RCSERVO_USECHANNEL15這樣的方式是
可以操作的,但是.net一定要用0~23的方式來指定。
以上是我個人的心得,希望後來的人就不會再有這樣的問題了。 原來是這樣阿, 感謝分享~
你現在要先控制什麼呢?
頁:
[1]
2