討論區快速選單
知識庫快速選單
掌握Salesforce雲端管理秘訣 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
關於 I/O port
更改我的閱讀文章字型大小
作者 : (Cool)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2000/12/13 上午 10:17:44
Dear 各位先進:
     小地有兩個問題想請教大家,希望能給小弟一點指導,Thank
     (1) 根據 MSDN 指出_inp _outp等這些函數好像只能用到Win95
     Win 2000好像就不能使用,小弟在W2k下使用這些函數,執行後
     確發生錯誤,請問有哪些新的函數可以做I/O port read write ?
     (2) bq2040 Gas Gauge IC 這個battery ic的I/O port是多少呀 @_@"
  
     Thank Cool
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2000/12/16 下午 11:42:01
>Dear 各位先進:
> 小地有兩個問題想請教大家,希望能給小弟一點指導,Thank
> (1) 根據 MSDN 指出_inp _outp等這些函數好像只能用到Win95
> Win 2000好像就不能使用,小弟在W2k下使用這些函數,執行後
> 確發生錯誤,請問有哪些新的函數可以做I/O port read write ?
> (2) bq2040 Gas Gauge IC 這個battery ic的I/O port是多少呀 @_@"

> Thank Cool

1.安裝win2000ddk就有範例ㄌ
2.查查你ㄉ規格書ㄅ....那應該不是標準ㄉI/O PORT
作者 : (Cool)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2000/12/17 下午 02:27:51
>>Dear 各位先進:
>> 小地有兩個問題想請教大家,希望能給小弟一點指導,Thank
>> (1) 根據 MSDN 指出_inp _outp等這些函數好像只能用到Win95
>> Win 2000好像就不能使用,小弟在W2k下使用這些函數,執行後
>> 確發生錯誤,請問有哪些新的函數可以做I/O port read write ?
>> (2) bq2040 Gas Gauge IC 這個battery ic的I/O port是多少呀 @_@"
>>
>> Thank Cool

>1.安裝win2000ddk就有範例ㄌ
>2.查查你ㄉ規格書ㄅ....那應該不是標準ㄉI/O PORT



謝謝你 lo,每次都是你回答了我的問題 *^^*
作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/11 下午 09:31:10
>>> (1) 根據 MSDN 指出_inp _outp等這些函數好像只能用到Win95
>>> Win 2000好像就不能使用,小弟在W2k下使用這些函數,執行後
>>> 確發生錯誤,請問有哪些新的函數可以做I/O port read write ?
>>
>>1.安裝win2000ddk就有範例ㄌ

請問一下,win2000ddk是什麼丫??
在哪有範例呢??
謝謝回答!!

作者 : (COOL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/11 下午 11:26:38
>>>> (1) 根據 MSDN 指出_inp _outp等這些函數好像只能用到Win95
>>>> Win 2000好像就不能使用,小弟在W2k下使用這些函數,執行後
>>>> 確發生錯誤,請問有哪些新的函數可以做I/O port read write ?
>>>
>>>1.安裝win2000ddk就有範例ㄌ

>請問一下,win2000ddk是什麼丫??
>在哪有範例呢??
>謝謝回答!!


要在Win2000下作IO port有幾種途徑
1.自己寫Driver,上面的DDK是Driver Develoment Kit就是Driver的工具書啦
2.使用CreateFile(), DeviceIoControl()來作IO port的read, write

作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/11 下午 11:53:39
>要在Win2000下作IO port有幾種途徑
>1.自己寫Driver,上面的DDK是Driver Develoment Kit就是Driver的工具書啦

ddk要再安裝嗎??用什麼來裝呢??

>2.使用CreateFile(), DeviceIoControl()來作IO port的read, write

呃~~有範例嗎???

嗯~說實在的,我是vc++的初學者,你說這些方法,我不懂../_\

謝謝您的回答!

作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/12 上午 09:47:08
>要在Win2000下作IO port有幾種途徑
>1.自己寫Driver,上面的DDK是Driver Develoment Kit就是Driver的工具書啦
>2.使用CreateFile(), DeviceIoControl()來作IO port的read, write

呃...先問一下,這二種方式哪種對於初學者較容易接受~
因為目前要安裝及了解ddk,感覺上似乎不是那麼容易..../_\
我只需要寫一控制資料到parallel port,並不需要讀回什麼東西...
也不需要控制什麼driver~~
那麼第二種方法,是直接呼叫DeviceIoControl就可以了嗎??



作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 上午 12:34:40
>>要在Win2000下作IO port有幾種途徑
>>1.自己寫Driver,上面的DDK是Driver Develoment Kit就是Driver的工具書啦
>>2.使用CreateFile(), DeviceIoControl()來作IO port的read, write
>>
>呃...先問一下,這二種方式哪種對於初學者較容易接受~
>因為目前要安裝及了解ddk,感覺上似乎不是那麼容易..../_\
>我只需要寫一控制資料到parallel port,並不需要讀回什麼東西...
>也不需要控制什麼driver~~
>那麼第二種方法,是直接呼叫DeviceIoControl就可以了嗎??





其實同樣ㄉ問題友人在此問過ㄌ...
查查com portㄉ範例....應該會有第二種方式ㄉ討論
寄給你ㄉ工具安裝新硬體後重開機就應該可以runㄌ
我是用第一種方法
因為可以包含所有io
作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 上午 08:19:28
>其實同樣ㄉ問題友人在此問過ㄌ...
>查查com portㄉ範例....應該會有第二種方式ㄉ討論
>寄給你ㄉ工具安裝新硬體後重開機就應該可以runㄌ
>我是用第一種方法
>因為可以包含所有io

我收到了,謝謝你...

你說,直接安裝新硬體???請問這是什麼意思??
你所傳來的附件包括.dll,.sys,.inf,.exe,不好意思,小妹才疏學淺,請問要怎麼安裝丫??

呃,那再請問一下,我原本的程式要輸出資料到i/o,只是利用一個function,那現在你所提供給我的是一個exe檔,我有辦法將它加在程式中嗎??

ps.我說明一下我程式功能好了,我要控制步進馬達的轉向和角度.讓user自行輸入所要轉的方向和角度,又因為步進馬達我接在print port,所以要控制它的資料就要將資料傳到378h

謝謝您的回答,感激不盡!!

作者 : (shian)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 上午 11:01:01
不曉得你有沒有用過 WinIO 這個函式庫
它提供一些函式讓使用者去存取 I/O Port
在 2k 及 98 下都適用,而且是免費的
你可以找找看,也許就是你要的
作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 上午 11:11:43
>不曉得你有沒有用過 WinIO 這個函式庫
>它提供一些函式讓使用者去存取 I/O Port
>在 2k 及 98 下都適用,而且是免費的
>你可以找找看,也許就是你要的

沒有耶~~這個函式庫是要自己去download嗎??去microsoft那嗎??
那再請問一下,download了之後要怎麼使用呢??

謝謝你的回答~~
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 上午 11:17:26
>>其實同樣ㄉ問題友人在此問過ㄌ...
>>查查com portㄉ範例....應該會有第二種方式ㄉ討論
>>寄給你ㄉ工具安裝新硬體後重開機就應該可以runㄌ
>>我是用第一種方法
>>因為可以包含所有io

>我收到了,謝謝你...

>你說,直接安裝新硬體???請問這是什麼意思??
>你所傳來的附件包括.dll,.sys,.inf,.exe,不好意思,小妹才疏學淺,請問要怎麼安裝丫??

>呃,那再請問一下,我原本的程式要輸出資料到i/o,只是利用一個function,那現在你所提供給我的是一個exe檔,我有辦法將它加在程式中嗎??

>ps.我說明一下我程式功能好了,我要控制步進馬達的轉向和角度.讓user自行輸入所要轉的方向和角度,又因為步進馬達我接在print port,所以要控制它的資料就要將資料傳到378h

>謝謝您的回答,感激不盡!!



選擇新增硬體精靈
新增一ㄍ裝置
選其他裝置
選inf安裝(需要dll及sys)
記得重開機後才能使用
然後使用gpdread及gpdwrite讀寫即可
例如
可用WinExec("GPDWRITE -b 378 aa",SW_SHOW);
378為io位址
aa為16進制
-b為byte存取
這是我寫ㄉdriver
source code你應該不需要知道ㄅ
作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 上午 11:46:24
>可用WinExec("GPDWRITE -b 378 aa",SW_SHOW);
>378為io位址
>aa為16進制
>-b為byte存取

那..那二個.exe檔要放在哪個目錄中呢??才能使它執行..
還有丫..aa是我要輸入的資料嗎??ex:0x19(這是16進制)
那後面的"SW_SHOW"我就照打就好了嗎??

>source code你應該不需要知道ㄅ

嗯~~~

謝謝您的回答!
作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 下午 12:46:59
>>可用WinExec("GPDWRITE -b 378 aa",SW_SHOW);
>>378為io位址
>>aa為16進制
>>-b為byte存取

>那..那二個.exe檔要放在哪個目錄中呢??才能使它執行..
>還有丫..aa是我要輸入的資料嗎??ex:0x19(這是16進制)

嗯~我安裝好了~我自己嘗試著把那二個exe檔和這個程式的執行檔放在同一目錄中,這樣不曉得對不對??
還有丫,我寫這樣
WinExec("gpdwrite -b 378 0x19",SW_SHOW);
但在compile之後,出現下列錯誤~
error C2065: 'WinExec' : undeclared identifier
error C2065: 'SW_SHOW' : undeclared identifier

謝謝您的回答~

作者 : (布布)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 下午 03:39:28
>>>可用WinExec("GPDWRITE -b 378 aa",SW_SHOW);
>>>378為io位址
>>>aa為16進制
>>>-b為byte存取
>>
>>那..那二個.exe檔要放在哪個目錄中呢??才能使它執行..
>>還有丫..aa是我要輸入的資料嗎??ex:0x19(這是16進制)

>嗯~我安裝好了~我自己嘗試著把那二個exe檔和這個程式的執行檔放在同一目錄中,這樣不曉得對不對??
>還有丫,我寫這樣
>WinExec("gpdwrite -b 378 0x19",SW_SHOW);
>但在compile之後,出現下列錯誤~
>error C2065: 'WinExec' : undeclared identifier
>error C2065: 'SW_SHOW' : undeclared identifier

>謝謝您的回答~


使用WinExec & SW_SHOW必需先include<windows.h>
另外我想CCL所寫的inf應該巳經把那兩個exe檔放在Windows
目錄下了,所以應該不用刻意把你的程式跟這兩個exe檔放在同
一目錄下.......

作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 下午 04:30:44
>>>>可用WinExec("GPDWRITE -b 378 aa",SW_SHOW);
>>>>378為io位址
>>>>aa為16進制
>>>>-b為byte存取
>>>
>>>那..那二個.exe檔要放在哪個目錄中呢??才能使它執行..
>>>還有丫..aa是我要輸入的資料嗎??ex:0x19(這是16進制)
>>
>>嗯~我安裝好了~我自己嘗試著把那二個exe檔和這個程式的執行檔放在同一目錄中,這樣不曉得對不對??
>>還有丫,我寫這樣
>>WinExec("gpdwrite -b 378 0x19",SW_SHOW);
>>但在compile之後,出現下列錯誤~
>>error C2065: 'WinExec' : undeclared identifier
>>error C2065: 'SW_SHOW' : undeclared identifier
>>
>>謝謝您的回答~
>>
>>
>使用WinExec & SW_SHOW必需先include<windows.h>
>另外我想CCL所寫的inf應該巳經把那兩個exe檔放在Windows
>目錄下了,所以應該不用刻意把你的程式跟這兩個exe檔放在同
>一目錄下.......


WinExec("gpdwrite -b 378 19",SW_SHOW);
不需加"0x"
exe是呼叫portio.dllㄉ讀寫io工具
安裝完driver後你高興放哪就放哪
如果參數不會下
執行一次exe不加參數就會看到說明ㄌ
作者 : (fen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/13 下午 11:10:04
OK~~可以執行了~~謝謝您的幫忙!!
作者 : (Eric Chen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/16 上午 07:53:52
Hi CCL:
    不知道您是否可也給我一份在Windows下可做IO port read write
    的driver,另外若您方便可否也給小弟driver source code呢?
    弟的E-Mail s3832228@ms15.hinet.net 非常謝謝您!!
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/16 下午 04:00:01
>Hi CCL:
> 不知道您是否可也給我一份在Windows下可做IO port read write
> 的driver,另外若您方便可否也給小弟driver source code呢?
> 弟的E-Mail s3832228@ms15.hinet.net 非常謝謝您!!

我們ㄉnotebook有含此driver
所以給source code不太方便耶
不過你是要做啥咪用途ㄉ
我才知道我需要給你什ㄇ
例如fen還有另一ㄍ人
我只有給工具exe
dll裡面ㄉ函式原型cpp及lib
driver檔案裡面ㄉinf及sys

我有兩ㄍdriver
一ㄍ跨平台(不含nt4.0)-不夠完美driver有問號icon
一ㄍ是for win2k-icon沒問題但只能支援單一系統
source code都需修改才能用在其他公司行號
因為偶們也要給oem廠商同一套
不知道你要哪種

作者 : (Eric Chen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/16 下午 04:36:04
>我們ㄉnotebook有含此driver
>所以給source code不太方便耶
>不過你是要做啥咪用途ㄉ
>我才知道我需要給你什ㄇ
>例如fen還有另一ㄍ人
>我只有給工具exe
>dll裡面ㄉ函式原型cpp及lib
>driver檔案裡面ㄉinf及sys

>我有兩ㄍdriver
>一ㄍ跨平台(不含nt4.0)-不夠完美driver有問號icon
>一ㄍ是for win2k-icon沒問題但只能支援單一系統
>source code都需修改才能用在其他公司行號
>因為偶們也要給oem廠商同一套
>不知道你要哪種


其實我也已經找到一個WINIO的driver但是我實在看不太懂他寫的方法
因為我目前剛接觸WDM的領域,所以才跟您情商source code,來加強
對WDM的了解,也因為您常在這個地方若我有不會也可以跟您請教
這就是我的需求lo *^^*
作者 : (najhk)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/16 下午 05:50:59
>>hi CCL
不好意思我也想問問題,我也想學wdm 我安裝了ddk和sdk
下載了範例程式但我不知道要如何編譯
可不可以教我如何設定vc++相關設定還有ddk的Build要如何操作和相關過程
感激不盡..................................
我的email:najhks@ara.seed.net.tw
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/17 上午 10:02:33
>其實我也已經找到一個WINIO的driver但是我實在看不太懂他寫的方法
>因為我目前剛接觸WDM的領域,所以才跟您情商source code,來加強
>對WDM的了解,也因為您常在這個地方若我有不會也可以跟您請教
>這就是我的需求lo *^^*

建議你去看看ddk下面範例
src\general\portio
我是改這ㄍ寫出來ㄉ
因為只有做io
所以只要改IOCTL_XXX就可以ㄌ
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/17 上午 10:08:09
>>>hi CCL
>不好意思我也想問問題,我也想學wdm 我安裝了ddk和sdk
>下載了範例程式但我不知道要如何編譯
>可不可以教我如何設定vc++相關設定還有ddk的Build要如何操作和相關過程
>感激不盡..................................
>我的email:najhks@ara.seed.net.tw

選擇ddk捷徑
Checked Build Environment
Free Build Environment
兩者其中一ㄍ
就會設定vc環境變數
再打build就行ㄌ
由source.makefile等檔案編譯
作者 : (Eric Chen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/18 上午 07:54:01
>>其實我也已經找到一個WINIO的driver但是我實在看不太懂他寫的方法
>>因為我目前剛接觸WDM的領域,所以才跟您情商source code,來加強
>>對WDM的了解,也因為您常在這個地方若我有不會也可以跟您請教
>>這就是我的需求lo *^^*
>>
>建議你去看看ddk下面範例
>src\general\portio
>我是改這ㄍ寫出來ㄉ
>因為只有做io
>所以只要改IOCTL_XXX就可以ㄌ


看過了亦試過了,但是用了上述的範例只能讀卻不能寫,真是苦惱!!
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/18 上午 10:26:07

 switch (IoctlCode)
     {
     case IOCTL_GPD_WRITE_PORT_UCHAR:
     WRITE_REGISTER_UCHAR(
     (PUCHAR)(nPort),
     *(PUCHAR)pIOBuffer );
     break;
     case IOCTL_GPD_WRITE_PORT_USHORT:
     WRITE_REGISTER_USHORT(
     (PUSHORT)(nPort),
     *(PUSHORT)pIOBuffer );
     break;
     case IOCTL_GPD_WRITE_PORT_ULONG:
     WRITE_REGISTER_ULONG(
     (PULONG)(nPort),
     *(PULONG)pIOBuffer );
     break;
     default:
     return STATUS_INVALID_PARAMETER;
     }
作者 : (CCL)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/18 上午 10:30:32
MEMORY----------------

switch (IoctlCode)
> {
case IOCTL_GPD_WRITE_PORT_UCHAR:
> WRITE_REGISTER_UCHAR(
> (PUCHAR)(nPort),
> *(PUCHAR)pIOBuffer );
break;
case IOCTL_GPD_WRITE_PORT_USHORT:
> WRITE_REGISTER_USHORT(
> (PUSHORT)(nPort),
> *(PUSHORT)pIOBuffer );
break;
case IOCTL_GPD_WRITE_PORT_ULONG:
> WRITE_REGISTER_ULONG(
> (PULONG)(nPort),
> *(PULONG)pIOBuffer );
break;
default:
> return STATUS_INVALID_PARAMETER;
> }

IOPORT-----------------

switch (IoctlCode)
     {
     case IOCTL_GPD_WRITE_PORT_UCHAR:
     WRITE_PORT_UCHAR((PUCHAR)(nPort),
     *(PUCHAR)pIOBuffer );
     break;
     case IOCTL_GPD_WRITE_PORT_USHORT:
     WRITE_PORT_USHORT((PUSHORT)(nPort),
     *(PUSHORT)pIOBuffer );
     break;
     case IOCTL_GPD_WRITE_PORT_ULONG:
     WRITE_PORT_ULONG((PULONG)nPort, *(PULONG)pIOBuffer );
break;
     default:
     return STATUS_INVALID_PARAMETER;
     }
作者 : (Eric Chen)
[ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2001/7/19 下午 07:04:07

  CCL 你好:
     很謝謝您提供這些程式碼,我先study如果有不懂
     的地方還請您多幫忙 !!



 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1728516