• 締切済み

RS232Cによる定電圧・定電流直流電源ZXシリーズの制御方法

VB2005によるTAKASAGOのZX-800Lの操作を行いたいのですがRS232Cのポートオープンができません。 MSCommかNspComを用いて何とかしたいのですがどうしたらいいでしょうか??現在のプログラムと設定が以下のものです。 Comport = 1,OP="9600,1,8,1",機器アドレス="01" MSComm.CommPort = 1 'RS-232Cポート番号 MSComm.Settings = "9600,n,8,1" Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click ret = Me.NspCom.ComOpen(Comport, OP) If ret = False Then MsgBox("ポートのオープンに失敗しました") End If End Sub もしくわ、MSComm.PortOpen = TrueをNspComの代わりに入れるかといったところなのですが…[HRESULTからの例外0x800A1F45]というエラーが出たりして通信できません。ポートオープンでき通信できるとZX-800LのREMOTEランプが点灯するはずなのですが点灯せず行き詰っています。アドバイス、解決方法、例になるプログラムありましたら教えてください。 ※拙い文章で申し訳ありません。補足等必要でしたら聞いてください。

みんなの回答

回答No.1

VB2005 であれば、.NET framework 2.0 のシリアル通信機能が使えます。 http://msdn.microsoft.com/ja-jp/library/cc720852.aspx 上記のページを参考にしてください。

pumpbridge
質問者

お礼

いろいろ試してみます。ありがとうございます。

関連するQ&A

  • VB2005によるRS232C制御

    VB2005でZX-800L(TAKASAGO)を動かしたいのですがポートオープンできません。(オープンできるとREMOTOが点灯するはずなんですが…) 現在MSCommまたは確認の意味でNSPcomを用いています。(シリアルポートもあるんですができれば前者でやりたい) 機器の設定は何度も確認して間違いはないと思われます。(windowsXP使用)プログラムは以下です。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '<RS232C constant> STX = "02" EOT = "04" ENQ = "05" '伝送キャラクタ設定 ACK = "06" NAK = "15" ETX = "03" RTN = "0A" Comport = 1 OP = "9600,n,8,1" 'baud rate,stop bit,data bit,parity ADD = "01" 'RS232Cアドレス BC = "\" & EOT & ADD 'EOT+ADD Call ATH(BC) 'アスキー変換サブルーチンです。 EOTADD = BCH または (MSComm.CommPort = 1 'RS-232Cポート番号 MSComm.PortOpen = True MSComm.Settings = "9600,n,8,1" MSComm.RThreshold = 1 MSComm.SThreshold = 1 MSComm.RTSEnable = False MSComm.InputMode = MSCommLib.InputModeConstants.comInputModeBinary) End Sub この後、クリックイベント ret = Me.NspCom.ComOpen(Comport, OP) If ret = -1 Then MsgBox("miss") End If または (MSComm.PortOpen = true) でオープンさせたいのですが… 機器のHPにもサンプルプログラムもなく困っています。助言&ご指摘お願いします。

  • VBSでCDトレイのオープン/クローズのコーディング方法わかりません。

    VBSでCDトレイのオープン/クローズのコーディング方法わかりません。 Excel for VBA では出来ましたが、VBSで作りたいのです。 http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs230.htm を見ると、VBSではDeclareが使えないようですね。 やり方がわかる方がいましたら、よろしくお願いします。 ----------- [Excel for VBA] Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpSectorsPerCluster As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Sub CD_Open() Ret = mciSendString("set cdaudio door open", vbNullString, 0, 0) End Sub Sub CD_Close() Ret = mciSendString("set cdaudio door closed", vbNullString, 0, 0) End Sub -----------

  • Button1をクリックしてエクセルファイルを開きたい

    VB2008のを使用しています。 Button1をクリックして「C:\test.xls」を開きたい場合 どのようなコードを書けばいいのでしょうか? ヘルプを見て Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Public Event Open As WorkbookEvents_OpenEventHandler ThisWorkbook_Open() Handles Me.Open Me.Application.WindowState = Excel.XlWindowState.xlMaximized End Sub End Class としてみましたがエラーになりました。 ご教授よろしくお願いします。

  • VB.NET2005からoracle92へ接続する方法。

    IDとパスワードを入力し、オラクルのDBにあるIDとパスワードだったら次の画面を開くというプログラムを作りたいです。 オラクルへの接続がうまく行ってないようで画面が固まってしまいます。 プログラムの不具合を教えていただけないでしょうか? よろしくお願いします。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New OleDb.OleDbConnection() Dim cmd As New OleDb.OleDbCommand() Dim rs As OleDb.OleDbDataReader cn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=*;User ID=*;Password=*;" cn.Open() '←ここで、エラーになります。 cmd = cn.CreateCommand() cmd.CommandText = "Select ID from abc" rs = cmd.ExecuteReader() While rs.Read() If TextBox1.Text = cmd.CommandText Then MessageBox.Show("パスワードを受付けました。") Dim frm2 As New Form2 frm2.Show() TextBox1.Clear() TextBox2.Clear() Else MessageBox.Show("パスワードが違います。") TextBox1.Text = "" TextBox1.Focus() TextBox1.Clear() TextBox2.Clear() End if     End While cn.Close() rs.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class

  • VB.NET2005からoracle92へ接続するには?

    IDとパスワードを入力し、オラクルのDBにあるIDとパスワードだったら次の画面を開くというプログラムを作りたいです。 オラクルへの接続がうまく行ってないようで画面が固まってしまいます。 プログラムの不具合を教えていただけないでしょうか? よろしくお願いします。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New OleDb.OleDbConnection() Dim cmd As New OleDb.OleDbCommand() Dim rs As OleDb.OleDbDataReader cn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=*;User ID=*;Password=*;" cn.Open() '←ここで、エラーになります。 cmd = cn.CreateCommand() cmd.CommandText = "Select ID from abc" rs = cmd.ExecuteReader() While rs.Read() If TextBox1.Text = cmd.CommandText Then MessageBox.Show("パスワードを受付けました。") Dim frm2 As New Form2 frm2.Show() TextBox1.Clear() TextBox2.Clear() Else MessageBox.Show("パスワードが違います。") TextBox1.Text = "" TextBox1.Focus() TextBox1.Clear() TextBox2.Clear() End if     End While cn.Close() rs.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class

  • 無限ループからの脱出用の文について

    **************************************************************** Button2がクリックされたらButton1の中のwhileの無限ループから抜け出すようにしたいのですが、どのようにすればよいのでしょうか。プログラミング初心者な為、初歩的な質問で申し訳ありません。 **************************************************************** Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click   質問1:Button2がクリックされた時のプログラム End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click While True   If 質問2:(Button2がクリックされたとき)Then Exit While End While End Sub

  • 電卓作成(緊急です!!)

    電卓作成(緊急です!!) 以下のようなコードで電卓を作りました。これで完成かな?と思いきや1+2=7-8=29、1+2+3=5 となり不具合が出てしまいました。どう直せばこれを解決できますか?(=の所がおかしい?) Public Class Form電卓 Inherits System.Windows.Forms.Form Dim R1 As Integer 'レジスタの値 Dim R2 As Integer 'レジスタの保存 Dim Op As Integer '演算子 Dim CL As Integer '数字列の制御 windows フォームデザイナーで生成されたコード Private Sub Button終了_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button終了.Click End End Sub Private Sub 数字キー(ByVal k As Integer) If CL Then R1 = 0 CL = False End If R1 = R1 * 10 + k TextReg.Text = R1 End Sub Private Sub 演算キー(ByVal o As Integer) Op = o R2 = R1 CL = True End Sub Private Sub 計算() Select Case Op Case 1 R1 = R2 + R1 Case 2 R1 = R2 - R1 Case 3 R1 = R2 * R1 Case 4 R1 = R2 \ R1 End Select End Sub Private Sub KeyN0_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles KeyN0.Click 数字キー(0) End Sub ’(引数が1~9と置き換わったコードがこの下に続きますが長くなるので今は省略します) Private Sub KeyOA_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles KeyOA.Click 演算キー(1) End Sub ’(引数が2~4と置き換わったコードがこの下に続きますが長くなるので今は省略します) Private Sub KeyEg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles KeyEg.Click 計算() TextReg.Text = R1 End Sub Private Sub KeyCl_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles KeyCl.Click R1 = 0 R2 = 0 Op = 0 CL = True TextReg.Text = "" End Sub Private Sub Form電卓_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load R1 = 0 R2 = 0 Op = 0 CL = True TextReg.Text = "" End Sub End Class

  • vb6.0でwavファイルの終了を監視する方法について

    お世話になります。 vb6.0でwavファイルを再生するプログラムを作成しております。 下記にコードを記述させていただきます。 Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String _ , ByVal lpstrReturnString As String _ , ByVal uReturnLength As Long _ , ByVal hwndCallback As Long) As Long Private Sub MSComm1_OnComm() '演奏が終了しているか確認 If LCase$(Left$(mciSendString("Status MIDI1 mode", "", 0, 0), 7)) = "stopped" Or _ LCase$(Left$(mciSendString("Status MIDI1 mode", "", 0, 0), 7)) = "0" Then ←(1) Dim ret As Long ret = mciSendString("stop midifile ", "", 0, 0) ret = mciSendString("close midifile", "", 0, 0) ret = mciSendString("open """ & P_PLIST_WARNING & """", "", 0, 0) ret = mciSendString("play """ & P_PLIST_WARNING & """ from 0 wait", "", 0, 0) ret = mciSendString("stop """ & P_PLIST_WARNING & """", "", 0, 0) ret = mciSendString("close """ & P_PLIST_WARNING & """", "", 0, 0) End If End Sub wavファイルを再生するにあたり、まず再生されていない状態を確認してから、再生したいと考えています。 しかしながら、(1)のコードで戻り値が"stopped"または"0"ではなく、"263"で返ってきており、停止を監視できず困っております。 お手数ですが、ご教授いただきたく宜しくお願い申し上げます。

  • MSCommで、文字化け

    こんにちは。いつも質問ばかりで恐縮ですが・・・ VB6(SP5)で、プログラミングをしております。 MSCommが文字化けをして困っております。 TA=NTT:V70MAX Windows2000 下記の通り、プログラミングをしています。文字化けがしない時は、ずっと うまく行きます。が、一度文字化けをしてしまうと、Windowsの再起動等を しなければどうにもなりません。(“・エZ・”等になります) Private Sub Form_Load() ‘初期化 MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.Handshaking = comRTS MSComm1.RThreshold = 1 MSComm1.InputLen = 0 MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() Dim wBuf As String If MSComm1.CommEvent = comEvReceive Then wBuf = MSComm1.Input Text1.Text = wBuf End If End Sub

  • 他のFormのクリックイベント

    教えてください! 他のFormのクリックイベントを実行できますか? Form2のButton2をクリックした時に、Form1の「Button1_Click」を実行させることができますか? 出来るとしたら、Form2の「Button2_Click」にはどのように記載したらいいのでしょうか? [Form1]より Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)・・・ [Form2]より Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)・・・ End Sub 宜しくお願いします。

専門家に質問してみよう