線上訂房服務-台灣趴趴狗聯合訂房中心
網站公告 :


Delphi K.Top討論區 » 難以歸類主題的討論區(C++Builder) » 可以幫忙翻譯vb轉bcb code嗎?
發表新文章
瀏覽次數:2037
推到 Plurk!
推到 Facebook!

可以幫忙翻譯vb轉bcb code嗎?

尚未結案
harvey30438
一般會員




發表:2
回覆:5
積分:1
註冊:2004-12-15

發送簡訊給我
#1 發表時間:2004-12-16 01:57:14 IP:221.169.xxx.xxx 未訂閱

'USBHID.DLL
'有四個api
'opendevice : 開始與HID裝置通訊
'Writedevice : 傳送資料到HID裝置
'Readdevice : 從HID裝置接收資料
'closedevice : 結束與HID裝置通訊

Public hid As New HIDUSB
Const MyVendorID = &H1234        ; 販售商VID碼
Const MyProductID = &H5678        ; 產品PID碼
Dim Timeout As Boolean    
Private Sub Command1_Click()
Dim hiddevice As Boolean
Dim send(7) As Byte    
Dim recevice() As String
hiddevice = hid.opendevice(MyVendorID, MyProductID) ; 判斷是否含有HID裝置
Text1.Text = hiddevice        
If hiddevice = True Then    
send(0) = Val("&H" + Text2.Text)        ; 如果含有人工界面裝置,就送出一個位元組資料
hid.Writedevice send()        
Timeout = False
Timer1.Enabled = True
        
Timer1.Interval = 50    
        
Do
DoEvents
Loop Until Timeout = True
recevice() = hid.Readdevice    ' 接收一個位元組資料
Text3.Text = recevice(0)
End If        
hid.closedevice    
End Sub        

Private Sub text2_KeyPress(KeyAscii As Integer)
If (Chr$(KeyAscii) Like "[!A-Fa-f0-9]") Then KeyAscii = 0
End Sub
Private Sub timer1_Timer()
Timeout = True
Timer1.Enabled = False
End Sub



發表人 - harvey30438 於 2004/12/16 02:06:21


李國維
高階會員




發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 發表時間:2004-12-16 11:23:35 IP:219.84.xxx.xxx 未訂閱


harvey30438
一般會員




發表:2
回覆:5
積分:1
註冊:2004-12-15

發送簡訊給我
#3 發表時間:2004-12-16 20:11:40 IP:221.169.xxx.xxx 未訂閱

抱歉..不過我有幾個地方還是不太懂ㄟ
Public hid As New HIDUSB
^^^^^^^^^^^^^^^^^^^^^^^^^這樣的宣告是什麼意思阿
Const MyVendorID = &H1234 ; 販售商VID碼
Const MyProductID = &H5678 ; 產品PID碼
Dim Timeout As Boolean
Private Sub Command1_Click()
Dim hiddevice As Boolean
Dim send(7) As Byte
Dim recevice() As String
hiddevice = hid.opendevice(MyVendorID, MyProductID) ; 判斷是否含有HID裝置    
^^^^^^^^^^^^^^^這樣的呼叫方式在bcb要怎麼呼叫..
Text1.Text = hiddevice
If hiddevice = True Then
send(0) = Val("&H" + Text2.Text) ; 如果含有人工界面裝置,就送出一個位元組資料
hid.Writedevice send() //send()裡沒有給數字可以使用??
Timeout = False
Timer1.Enabled = True

Timer1.Interval = 50

Do
DoEvents //這在bcb該怎麼使用
Loop Until Timeout = True
recevice() = hid.Readdevice ' 接收一個位元組資料
^^^^^^^^^^我真的搞不懂沒加數字跟有加數字的差別
Text3.Text = recevice(0)
End If
hid.closedevice
End Sub
各位大大真抱歉...vb的語法真的看不懂@@
最近一值在爬有關use控制的文章
不過越爬越頭痛=.=
感覺好複雜阿/_



發表人 - harvey30438 於 2004/12/16 20:13:42

李國維
高階會員




發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#4 發表時間:2004-12-17 10:18:02 IP:219.84.xxx.xxx 未訂閱

harvey30438:
1.
Public hid As New HIDUSB.就是指
在Public中宣告一各HIDUSB類型的hid指標.
2.
hiddevice = hid.opendevice(MyVendorID, MyProductID) ;
^^^^^^^^^^^^^^^這樣的呼叫方式在bcb要怎麼呼叫..
如過沒錯ㄉ話
opendevice應該是USBHID.DLL中的函式.
所以說你要先利用我前一篇所提供的文章.
將DLL的函數指標建立好.這樣才可以直接只用.
3.
VB中的DoEvents它的作用是轉讓控制權,以便操作系統處理事件.
在BCB中你可以使用 Application->ProcessMessages()來達到一樣的效果
4.建議有空去翻翻VB的書.其實VB語法蠻簡單.這樣的話你在做轉換會比較輕鬆



發表人 - 李國維 於 2004/12/17 10:28:33

無故障
一般會員




發表:17
回覆:69
積分:17
註冊:2004-03-11

發送簡訊給我
#5 發表時間:2004-12-17 17:32:44 IP:61.221.xxx.xxx 未訂閱


隨便翻,供參考 ^_^




//-------------------------------------------------------

//USBHID.DLL
//有四個api
//opendevice : 開始與HID裝置通訊
//Writedevice : 傳送資料到HID裝置
//Readdevice : 從HID裝置接收資料
//closedevice : 結束與HID裝置通訊

Public hid As New HIDUSB
Const MyVendorID = &H1234 ; //販售商VID碼
Const MyProductID = &H5678 ;// 產品PID碼
bool Timeout ;


Private Sub Command1_Click()
{
    bool hiddevice ;
    char send[7]
    AnsiString recevice
    hiddevice = hid.opendevice(MyVendorID, MyProductID) ; //判斷是否含有HID裝置
    Text1->Text = hiddevice ;

    if ( hiddevice == True)
    {
        send(0) = Val("&H" + Text2.Text) ; 如果含有人工界面裝置,就送出一個位元組資料
        hid.Writedevice send() ;
        Timeout = False ;
        Timer1->Enabled = True ;

        Timer1->Interval = 50 ;

        //Do
        //DoEvents
        //Loop Until Timeout = True
        while (Timeout != True )
        {
        Application->ProcessMessages();
        
        }
        recevice() = hid.Readdevice;// ' 接收一個位元組資料
        Text3->Text = recevice(0);

    };

    hid.closedevice ;

};//End Sub

Private Sub text2_KeyPress(KeyAscii As Integer)
{
    //If (Chr$(KeyAscii) Like "[!A-Fa-f0-9]") Then KeyAscii = 0
    //請自行判斷 keyin 代號
    
};//End Sub
//-----------------------------------------------------------
Private Sub timer1_Timer()
{
    Timeout = True;
    Timer1.Enabled = False;
};//End Sub

//-------------------------------------------------------



應該有問題嗎.... ^_^

練習!
練習!
再練習!
------
嘿嘿嘿

ddy
站務副站長




發表:262
回覆:2104
積分:1169
註冊:2002-07-13

發送簡訊給我
#6 發表時間:2004-12-17 18:50:18 IP:202.145.xxx.xxx 未訂閱

harvey30438 您好
程式碼請縮排,敬請配合,詳請參考
【公告】程式碼張貼規則與方法


harvey30438
一般會員




發表:2
回覆:5
積分:1
註冊:2004-12-15

發送簡訊給我
#7 發表時間:2004-12-18 00:13:48 IP:221.169.xxx.xxx 未訂閱

引言:

harvey30438:
1.
Public hid As New HIDUSB.就是指
在Public中宣告一各HIDUSB類型的hid指標.
2.
hiddevice = hid.opendevice(MyVendorID, MyProductID) ;
^^^^^^^^^^^^^^^這樣的呼叫方式在bcb要怎麼呼叫..
如過沒錯ㄉ話
opendevice應該是USBHID.DLL中的函式.
所以說你要先利用我前一篇所提供的文章.
將DLL的函數指標建立好.這樣才可以直接只用.
3.
VB中的DoEvents它的作用是轉讓控制權,以便操作系統處理事件.
在BCB中你可以使用 Application->ProcessMessages()來達到一樣的效果
4.建議有空去翻翻VB的書.其實VB語法蠻簡單.這樣的話你在做轉換會比較輕鬆



發表人 - 李國維 於 2004/12/17 10:28:33


真的很感激~~
謝謝你的指導囉^^
看來我還有得學勒^^"


harvey30438
一般會員




發表:2
回覆:5
積分:1
註冊:2004-12-15

發送簡訊給我
#8 發表時間:2004-12-18 00:15:10 IP:221.169.xxx.xxx 未訂閱

引言:

harvey30438 您好
程式碼請縮排,敬請配合,詳請參考
【公告】程式碼張貼規則與方法




抱歉..原來你所謂的縮排是這個意思^^"
以後會注意


harvey30438
一般會員




發表:2
回覆:5
積分:1
註冊:2004-12-15

發送簡訊給我
#9 發表時間:2004-12-19 04:28:16 IP:221.169.xxx.xxx 未訂閱


extern "C" __declspec(dllimport) void __stdcall opendevice(const MyVendorID,const MyProductID);
//extern "C" __declspec(dllimport) void __stdcall Writedevice(Byte x);
//extern "C" __declspec(dllimport) void __stdcall closedevice();

const MyVendorID=0x1234;
const MyProductID=0x5678;

bool Timeout;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool (*openhid)(const ,const );
//void (*writehid)(Byte x);
void (*closehid)();
HINSTANCE hid=LoadLibrary("USB_HID.dll");
(FARPROC &)openhid=GetProcAddress(hid,"opendevice");
//(FARPROC &)writehid=GetProcAddress(hid,"Writedevice");
(FARPROC &)closehid=GetProcAddress(hid,"closedevice");
bool hiddevice;
hiddevice=true;
byte send[7];
hiddevice =openhid(MyVendorID, MyProductID);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我快瘋了..函數指標也建立好了
但是執行此DLL內建函數時還是會出現錯誤
是我函式設定的格式不符合嗎?
還是有可能哪邊沒注意到




發表人 - harvey30438 於 2004/12/19 04:29:15

李國維
高階會員




發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#10 發表時間:2004-12-19 20:18:11 IP:218.167.xxx.xxx 未訂閱

harvey30438:
1.你試試看把const改成long
extern "C" __declspec(dllimport) void __stdcall opendevice(long MyVendorID,long MyProductID);
bool (*openhid)(long ,long );
2.你把中斷點設在下面這一行,看看hid的值是不是NULL.
HINSTANCE hid=LoadLibrary("USB_HID.dll");




系統時間:2014-04-18 16:21:09,  線上使用者 319 / Max 973,主題數:96,814,回覆數:219,008。  聯絡我們 | Delphi.ktop討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!
5151線上健康照護網 | 台灣西醫網 | 台灣中醫網 | 台灣牙科網 | 台灣照護網 | 趴趴狗旅遊網
大花蓮旅遊網 | 大花蓮民宿網 | 花蓮旅遊網 | 花蓮旅遊 | 花蓮旅遊 | 花蓮住宿
花蓮民宿網 | 花蓮旅遊 | 花蓮住宿 | 花蓮民宿 | 花蓮旅遊 | 花蓮民宿
花蓮住宿 | 大南投旅遊網 | 大南投民宿網 | 日月潭風景區 | 日月潭旅遊網 | 日月潭民宿網
日月潭住宿網 | 宜蘭旅遊網 | 宜蘭民宿網 | 宜蘭住宿網 | 宜蘭旅遊網 | 宜蘭民宿網
宜蘭住宿網 | 宜蘭旅遊網 | 宜蘭民宿網 | 宜蘭住宿網 | 台東旅遊網 | 台東民宿網
台東住宿網 | 台東旅遊網 | 台東民宿網 | 台東住宿網 | 台東旅遊 | 台東民宿
台東住宿 | 綠島旅遊網 | 綠島民宿網 | 綠島住宿網 | 綠島旅遊網 | 綠島民宿網
綠島住宿網 | 綠島旅遊網 | 綠島民宿網 | 綠島住宿網 | 集集旅遊網 | 集集民宿網
集集住宿網 | 關子嶺旅遊網 | 關子嶺民宿網 | 白河旅遊網 | 白河民宿網 | 心脈大師
尊榮牙醫診所 |