現在,ディジタルマルチメータをPCで制御するため,PCとディジタルマルチメータをRS-232Cケーブルで接続し,Visual Basic 2005を用いて制御しようとプログラムを作成しています.
以前は,Visual Basic 6.0で制御していたのですが,今後の為を考え,2005へ移行することにしました.
そこで,VB6のプログラムと同様の設定を用いて,同じ命令をマルチメータ側に送信しようとするのですが,マルチメータ側で命令を受信した後に,マルチメータがエラーを出してしまいます.
全ての命令に対してエラーを出すのではなく,マルチメータ側から返信を伴う命令に対してのみエラーが出るようです.
環境は,PC:Windows XP (Home),マルチメータ:Agilent 34401Aです.
以下がソースの一部です.
[VB6]
With SerialPort
.CommPort = 4
.Settings = "9600,n,8,1"
.Handshaking = comNone
.RThreshold = 1
.SThreshold = 1
.InputLen = 0
.PortOpen = True
End With
SerialPort.Output = ":SYST:REM" & vbCrLf 'マルチメータをリモートにする
SerialPort.Output = "MEAS:VOLT:DC? 10V,0.003V" & vbCrLf '直流電圧を測定
[VB2005]
With SerialPort
.PortName = "COM4"
.BaudRate = 9600
.DataBits = 8
.Parity = IO.Ports.Parity.None
.Handshake = IO.Ports.Handshake.None
.Open()
End With
SerialPort.WriteLine("SYST:REM" & vbCrLf) 'マルチメータをリモートにする(エラーは出ない)
SerialPort.WriteLine("MEAS:VOLT:DC? 10V, 0.003V" & vbCrLf) '直流電圧を測定(エラーが出る)
原因などが分かれば,教えてください.
よろしくお願いします.
No.3ベストアンサー
- 回答日時:
#2の方が書いているように、
WriteLine()は、自動的にデリミタをつけます。
デリミタはSerialPort.NewLineで指定し、デフォルトはvbLfだったと思います。(今.NETの環境が無いので自信無し)
送信時にvbCrLfを付加するなら、Write()を使うと良いです。
この回答への補足
Write()を使って命令を送信するには,
SerialPort.Write("MEAS:VOLT:DC? 10V,0.003V" & vbCrLf)
でよろしいのでしょうか?また,NewLineでの指定は
SerialPort.NewLine = vbCrLf
でよろしいですか?
この設定で間違いが無いのであれば,これでもエラーが出るため,別の原因ではないかと思うのですが…
No.2
- 回答日時:
WriteLineでやってるなら vbCrLfを付加しなくてもいいのではないでしょうか
余分に CRLFが出力されているため マルチメータがエラーになってるとか …
この回答への補足
もし,CrLfを余分に出力しているためエラーが出るのだとすると,最初のマルチメータをリモートにする時にエラーが出ないのはなぜでしょうか?
リモートにする命令,電圧測定をさせる命令からそれぞれvbCrLfを削除して試してみましたが,やはり同じタイミングでエラーが出るようです.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- その他(ニュース・時事問題) アムウェイの取引停止命令の、他の会社への影響 1 2022/10/20 13:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Android(アンドロイド) MacroDroidでUSB設定の変更がしたいです。 AQUOS SENSE4 Basic を使用し 1 2022/07/30 11:20
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
エクセル関数を教えてください
-
String""から型'Double'への変...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
ApplicationとWorksheetFunctio...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
【VB.NET】 パワポ操作を非表示で
-
文字列内で括弧を使うには
-
ASPで、変数名に、変数を入れら...
-
マクロの「SaveAs」でエラーが...
-
VBスクリプトでIEの404 not fou...
-
変数にするとエラーになる理由は?
-
「実行時エラー '3167' レコー...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
ACCESSで値を代入できないとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
エクセルVBA 「On Error GoTo...
-
VBA データ(特定値)のある最...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
「実行時エラー '3167' レコー...
-
バッチファイルで、あるスクリ...
おすすめ情報