2012年10月22日 星期一

自動搜尋ComPort+MSComm+傳輸模組=自定義控制項 For VB6


本以為會很難, 好佳在只遇到一些小問題, 拜google大神之賜也都順利排除, 底下是這個自定控件的原來樣子

 一個picturebox+一個MSComm控制項, 會合成下面那個控制項



拉到表單會變成這樣, 在運行程式時, 它會自隱藏, 就像MSComm控件一樣, 有了這個東西能做什麼呢?

這可好用了, 你只要給這個控件你的SerialPortName(這個名稱在注冊表裡), 和你想傳給你的USB virtual ComPort(目前是內定成Pic的Device)的指令字串, 如下

dim TransferCommandString(5) as string

TransferCommandString(0)="L" => L是指byte mode, H是指word mode

TransferCommandString(1)="W" => W是指I2C的Write, 也可以是R=Read, C=Receive,S=send

TransferCommandString(2)="6C" => 6C是指I2C Device的Address

TransferCommandString(3)="01" => 01是指I2C Device的Command Addr

TransferCommandString(4)="11" => 11是指I2C Device的low byte data(選擇byte mode就只到這裡)

TransferCommandString(5)="22" =>22是指I2C Device的high byte data(選擇Word mode才有這個指令)

ComPort1.SerialPortName="\Device\USBSER000" => 這個指Pic在注冊表裡的名稱

ComPort1.ConnectPicDevice => 按照SerialPortName去找Device, 一但找到會自動設定MSComm相關屬性, 並打開它

ComPort1.Output=TransferCommandString => 把你的指令陣列送到Pic去做處理

這樣就完成了, 自己都覺得很方便, 而且它是做成控件, 以後一拉出來就不用再把以前的程式剪來貼去, 程式變得簡潔, 好維護, 更重要的是它是會自動搜尋comport的number, 依注冊表名稱找到後, 會自動設定MSComm的相關屬性(目前是固定, 也許以後可以改成user自己設定), 相當人性化, 下一個文章是再把輸入指令的部份+Comport的控件就變成一個完整的I2C for USB virtual ComPort控件, 指令可自由輸入, 也同時支援byte mode and word mode, 繼續努力囉~~

沒有留言:

張貼留言

歡迎大家來討論交流一下~~~