by Tomorrow » 2006年10月25日(水) 20:06
セントロニクス・コネクタってパラレルポート(プリンタポート)のことですよね?
OUT命令の詳細がわからなかったので旧AB2.62のヘルプより拝借。
要するにOUT命令を実行したら単に1バイトのデータがポートへ出力されれば良いということでしょうか?
パラレルポート・シリアルポートならWin32APIのCreateFile()、WriteFile()、ReadFile()を使えば扱えるみたいです。
詳しくは パラレルポート Win32API CreateFile 等をキーワードにググってみてください。いくつか出ると思います。
プログラムはこんな感じでしょうか?(注:テストしてません)
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim hFile As HANDLE
Dim outBuf As Byte
Dim dwAccessed As DWord
'ポートオープン
hFile = CreateFile(
"LPT1", 'LPTポート番号(文字列で指定)
GENERIC_WRITE, '書き込みアクセス権(出力だから)
0, '非共有(ポート占有)
ByVal 0, '不使用
OPEN_EXISTING, 'ポートが存在する時のみオープン
FILE_ATTRIBUTE_NORMAL,
0
)
'出力
outBuf = &H55
WriteFile(hFile, VarPtr(outBuf), 1, VarPtr(dwAccessed), ByVal 0)
'ポートクローズ
CloseHandle(hFile)
読み込みはReadFile()を使います。ABのヘルプにも載っています。
複数バイトを書き込んだとき(outBufをByte型配列として定義し、WriteFileの第3引数を変更)のポートの動作は自分で調べてください。
セントロニクス・コネクタってパラレルポート(プリンタポート)のことですよね?
OUT命令の詳細がわからなかったので旧AB2.62のヘルプより拝借。
[hide=Out命令語][b]Out[/b] [i]port, databyte[/i]
[i]port[/i]
ポート番号を指定します。
[i]databyte[/i]
出力するデータ(1バイト)を指定します。[/hide]
要するにOUT命令を実行したら単に1バイトのデータがポートへ出力されれば良いということでしょうか?
パラレルポート・シリアルポートならWin32APIのCreateFile()、WriteFile()、ReadFile()を使えば扱えるみたいです。
詳しくは パラレルポート Win32API CreateFile 等をキーワードにググってみてください。いくつか出ると思います。
プログラムはこんな感じでしょうか?(注:テストしてません)
[hide][code]Dim hFile As HANDLE
Dim outBuf As Byte
Dim dwAccessed As DWord
'ポートオープン
hFile = CreateFile(
"LPT1", 'LPTポート番号(文字列で指定)
GENERIC_WRITE, '書き込みアクセス権(出力だから)
0, '非共有(ポート占有)
ByVal 0, '不使用
OPEN_EXISTING, 'ポートが存在する時のみオープン
FILE_ATTRIBUTE_NORMAL,
0
)
'出力
outBuf = &H55
WriteFile(hFile, VarPtr(outBuf), 1, VarPtr(dwAccessed), ByVal 0)
'ポートクローズ
CloseHandle(hFile)[/code][/hide]
読み込みはReadFile()を使います。ABのヘルプにも載っています。
複数バイトを書き込んだとき(outBufをByte型配列として定義し、WriteFileの第3引数を変更)のポートの動作は自分で調べてください。