ページ 1 / 1
OUT命令は使えますか?
Posted: 2006年10月23日(月) 22:24
by ムッシュ
I/Oポート(セントロニクス・コネクタ)を使ってモーター制御を行いたいのですが、ABにはそのような機能がありますか?
Re: OUT命令は使えますか?
Posted: 2006年10月25日(水) 20:06
by Tomorrow
セントロニクス・コネクタってパラレルポート(プリンタポート)のことですよね?
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引数を変更)のポートの動作は自分で調べてください。
Posted: 2006年10月25日(水) 22:54
by マティ
個人的にはよく分らないのですが・・・
前にH/W制御(USB?)についてABユーザーが本を書いた記事が載っていたので、その辺の関連の質問と思われます。
具体的な質問があれば、作者(山本様)にも確認したいと思いまが、どのような事に困っているのでようか?
もちろん、全ての条件(特許等の企業秘)を記載する必要はありませんが、どのような制御が必要かわからないと手の打ちようありませんので、宜しくお願いします。
Posted: 2006年10月28日(土) 22:26
by konisi
I/Oを直に叩くならアセンブリ言語でやった方がずっと速いんじゃないかなと思う。
ただし、ABにはインラインアセンブラは付いていない。
Posted: 2006年10月29日(日) 20:14
by マティ
konisi さんが書きました:/Oを直に叩くならアセンブリ言語でやった方がずっと速いんじゃないかなと思う。
Windowsではプログラムから特定のI/Oポートを直接制御するには、デバイスドライバーを作成する必要がありますので、作成する為のハードルがかなり高くなります。
普通のアプリではAPIを使用してみた方が良いと思います・・・って
アプリで制御した事はないのですが・・・