C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: プリンタポート入力の仕方について


(過去ログ 76 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■44893 / inTopicNo.1)  プリンタポート入力の仕方について
  
□投稿者/ 1323 (1回)-(2009/12/22(Tue) 18:54:27)
1323 さんの Web サイト

分類:[.NET 全般] 

プリンタポートの9ピン目をbusyに使いたいと思います。

そこでもし他のピンの状態に関わらず9ピンに電圧を感じたらビジー状態であるというプログラムはどうしたらいいでしょうか?


以下のように自分でつくってみたんですが


If (InpB(&H378 = 512)) Then
i = 0
While (i < 10000000)
OutB(&H378, 1)
OutB(&H378, 0)
i = i + 1
End While
Else
'別の処理
End If

9ピンに電圧がきていてもきていなくても繰り返しの部分を行ってしまいます。

何か入力設定など必要なことがあるのでしょうか?

入力を受けるプログラム、ifの中身の書き方とかアドバイスあればお願いします。
引用返信 編集キー/
■44898 / inTopicNo.2)  Re[1]: プリンタポート入力の仕方について
□投稿者/ .SHO (1060回)-(2009/12/22(Tue) 19:18:59)
No44893 (1323 さん) に返信

> If (InpB(&H378 = 512)) Then

         ↓
  If (InpB(&H378) = 512) Then

とか?

引用返信 編集キー/
■44899 / inTopicNo.3)  Re[2]: プリンタポート入力の仕方について
□投稿者/ ぽぴ王子 (470回)-(2009/12/22(Tue) 19:22:31)
ぽぴ王子 さんの Web サイト
No44893 (1323 さん) に返信
> プリンタポートの9ピン目をbusyに使いたいと思います。
> 
> そこでもし他のピンの状態に関わらず9ピンに電圧を感じたらビジー状態であるというプログラムはどうしたらいいでしょうか?
>  
>  
> 以下のように自分でつくってみたんですが
>  
> 
>         If (InpB(&H378 = 512)) Then
>              i = 0
>             While (i < 10000000)
>                  OutB(&H378, 1)
>                  OutB(&H378, 0)
>                 i = i + 1
>             End While
>         Else
>            '別の処理
>         End If
>  
> 9ピンに電圧がきていてもきていなくても繰り返しの部分を行ってしまいます。
> 
> 何か入力設定など必要なことがあるのでしょうか?
> 
> 入力を受けるプログラム、ifの中身の書き方とかアドバイスあればお願いします。

回答の前に、とりあえずいくつか。

(1) ソースコードを載せるときは、投稿モードに「図表モード (ソースコードを貼る場合はこちらを使用)」というのを選びましょう。
(2) 分類は「.NET 全般」ではないですよね。たぶん「VB6 以前」だと思いますが、回答をもらうためには正しい分類にしましょう。
(3) Webサイトに入力したサイトは、そのサイトを参考にしたということですよね?本文中にちゃんと書いた方がいいかと思います。

それをふまえた上で。

>         If (InpB(&H378 = 512)) Then

ここが

>         If (InpB(&H378) And &H80) <> 0 Then

なんじゃないかしらん?と思いますが、どうでしょう。
まずはビット演算について調べた方がいいかもですね。

引用返信 編集キー/
■44900 / inTopicNo.4)  Re[2]: プリンタポート入力の仕方について
□投稿者/ .SHO (1061回)-(2009/12/22(Tue) 19:25:04)
>>If (InpB(&H378 = 512)) Then
> 
>          ↓
>   If (InpB(&H378) = 512) Then
> 
> とか?

しまった。。。
「=」 のわけないですね。「&」だっけ?「AND」??

引用返信 編集キー/
■44909 / inTopicNo.5)  Re[3]: プリンタポート入力の仕方について
□投稿者/ 774RR (445回)-(2009/12/22(Tue) 20:21:16)
そもそも根本的に Windows のアプリケーションレベルで in out などの特権命令を実行することは許されていない。
そのへん理解してあえて[できないことをやっている]わけなの?
あと、たとえば USB-IEEE1284 インターフェイスを使いたいという客がいるとして
そんな場合に 0x378 ポートを読んだからといって何か正しい挙動をするわけがない、ってあたりも大丈夫?

最初から間違っているので、方針転換することを推奨する。
引用返信 編集キー/
■44916 / inTopicNo.6)  Re[1]: プリンタポート入力の仕方について
□投稿者/ オショウ (483回)-(2009/12/22(Tue) 22:02:44)
No44893 (1323 さん) に返信
> プリンタポートの9ピン目をbusyに使いたいと思います。

  で、InpB がエラーなく実行できる環境は?
  OSと言う意味と、.NETならInpBは.NET Frameworkのクラスに無いので
  Declareした関数と考えて・・・

  実際のところ、技術的には可能な話だが・・・

  ただ、プリンターポートのBUSY信号は、プリンター側がBUSYなのをPC
  側に知らせるものなので、PC側は、基本IN・・・

  で、『9ピン目をbusyに使いたい』と言うことは、PC側でできること
  ではなく、プリンター側から回路的にオンしないと、認知することがで
  きない・・・

  よって
OutB(&H378, 1)
OutB(&H378, 0)
  としても無意味・・・

※ いろいろ矛盾もありますが、どうしたいのか?
  どういう結果を望んでいるのか・・・ハードウェアの仕組みとOSの
  仕組みを知らないと、PC壊すヨ!

以上。
引用返信 編集キー/
■44924 / inTopicNo.7)  Re[2]: プリンタポート入力の仕方について
□投稿者/ 1323 (2回)-(2009/12/23(Wed) 10:58:07)
.SHOさん  ぽぴ王子さん へ

そのプログラムでやったけどできませんでした。
ありがとうございます。

オショウさん へ

OSはxpです。

.netを使っています。

DLLを読み込んでI/Oを操作しようというものです。




パソコンからプリンタポートを介してマイコンを制御しようということをしたいと思っています。

そこでマイコンからの信号をパソコンが受け取る作業が必要になりました。

だから"9ピンに電圧が来たら"というプログラムがほしいというわけです。

そしてそれを感じたらパソコンから出力命令(outB)を出すという構成になっています。
引用返信 編集キー/
■44927 / inTopicNo.8)  Re[3]: プリンタポート入力の仕方について
□投稿者/ ぽぴ王子 (471回)-(2009/12/23(Wed) 11:43:13)
ぽぴ王子 さんの Web サイト
No44924 (1323 さん) に返信
>  .SHOさん  ぽぴ王子さん へ
> 
> そのプログラムでやったけどできませんでした。
> ありがとうございます。

「できませんでした」だけでは「どういう風にできなかったのか」がわかりません。
回答を求めているのであれば、キチンと書きましょう。
最初の投稿もそうですが、説明不足ですよ。

>  オショウさん へ
> 
> OSはxpです。
> 
> .netを使っています。
> 
> DLLを読み込んでI/Oを操作しようというものです。

参考にした(と思われる)サイトで紹介されていた「VBIOSCM」を使ったということですか?
あれはVB6用で.NET用ではないと思いますが……
# なので「VB6の間違いでは?」と指摘しました

OutBというメソッドは.NET標準のライブラリにはないはずなので、おそらくなんらかの
「DLLを読み込んでI/Oを操作」しているのだと思いますが、それが何かを書いていただかないと
わからないのです。回答者はエスパーではありません。

> パソコンからプリンタポートを介してマイコンを制御しようということをしたいと思っています。
> 
> そこでマイコンからの信号をパソコンが受け取る作業が必要になりました。
> 
> だから"9ピンに電圧が来たら"というプログラムがほしいというわけです。
> 
> そしてそれを感じたらパソコンから出力命令(outB)を出すという構成になっています。

個人的には774RRさんの発言をよく読んでみた方がいいと思います。
どうもビット演算どころか、その前になにかいろいろと勉強しなければいけないところが
あるように思います。
私も方向転換に一票追加しておきます。

引用返信 編集キー/
■44957 / inTopicNo.9)  Re[1]: プリンタポート入力の仕方について
□投稿者/ .SHO (1067回)-(2009/12/24(Thu) 09:19:20)
No44893 (1323 さん) に返信

> 9ピンに電圧がきていてもきていなくても繰り返しの部分を行ってしまいます。

これって、どうやって検証したんですか?
引用返信 編集キー/
■44959 / inTopicNo.10)  Re[3]: プリンタポート入力の仕方について
□投稿者/ オショウ (485回)-(2009/12/24(Thu) 09:54:12)
No44924 (1323 さん) に返信
> OSはxpです。
>
> .netを使っています。
>
> DLLを読み込んでI/Oを操作しようというものです。

  ぽぴ王子さんが書いてますが・・・
  使っているのは『VBIOSCM』ですか?

  ならば・・・
  http://www15.wind.ne.jp/~ray7/pcio/index.html
  ここの、LPTCHECKを.NETにアップグレードしてみて
  動作させてみたら如何?

  多分、そのまま動作すると思いますが・・・

  で、動けば自分の欲しい機能に作り直す・・・

※ BUSY信号の動作確認には、実際にセントロにプリンターを
  繋いで、READYボタンなりをオン/オフするなりしてみれ
  ば解るかと・・・

以上。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -