こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ロックインアンプの制御プログラム

こんにちは。
どなたか下記のプログラムをVisual Basic 6.0使用のソースコードに
変換していただける方いませんでしょうか?
これはSRS社製のSR510ロックインアンプのRS232C経由でパソコンで制御するためのプログラムコードです。

10 ′ EXAMPLE PROGRAM TO READ THE SR510 OUTPUT AND RAMP THE X6 ANALOG OUTPUT
20 ′ USING IBM PC BASICA AND THE COM1: RS232 PORT.
30 ′
40 ′
50 ′ ON THE REAR PANEL OF THE SR510, SET SWITCH #1 OF SW2 DOWN
60 ′ AND ALL OTHER SWITCHES IN SW2 UP. (9600 BAUD, NO PARITY)
70 ′
80 OPEN ″COM1:9600,N,8,2,CS,DS,CD″ AS #1
90 ′ SET UP COM1: PORT TO 9600 BAUD, NO PARITY, 8 DATA BITS, 2 STOP BITS,
100 ′ IGNORE CTS (CLEAR TO SEND), DSR (DATA SET READY),
110 ′ AND CD (CARRIER DETECT).
120 ′
130 PRINT #1, ″ ″ ′CLEAR UART BY SENDING SPACES
140 PRINT #1,″Z″ ′RESET SR510
150 FOR I = 1 TO 200: NEXT I ′WAIT FOR RESET TO FINISH
160 ′
170 X = 0 ′INIT X6 OUTPUT TO ZERO
180 ′
190 PRINT #1, ″Q″ ′READ OUTPUT
200 INPUT #1,V1 ′INTO V1
210 ′
220 PRINT ″OUTPUT = ″;V1
230 ′
240 X =X + .0025 ′INCREMENT X6 OUTPUT BY 2.5 MV
250 IF X > 10 THEN X = 0 ′RESET X6 RAMP
260 PRINT #1, USING ″X6, ##.###″;X ′SET X6 OUTPUT VOLTAGE
270 ′
280 GOTO 190 ′LOOP FOREVER

他力本願でまことに申し訳ありませんが何とぞよろしくおねがいします。

投稿日時 - 2007-02-12 20:12:44

QNo.2746825

すぐに回答ほしいです

質問者が選んだベストアンサー

実機がないので、こちらでテストすることはできませんが、アドバイスとして書き込みます。
VB6で実装したいという事なので、MSCommを利用すればできそうですね。

------------------------------------------------------------------------------------
>80 OPEN ″COM1:9600,N,8,2,CS,DS,CD″ AS #1
>90 ′ SET UP COM1: PORT TO 9600 BAUD, NO PARITY, 8 DATA BITS, 2 STOP BITS,
>100 ′ IGNORE CTS (CLEAR TO SEND), DSR (DATA SET READY),
>110 ′ AND CD (CARRIER DETECT).

まずは、通信速度・パリティなどを指定してCommポートのオープンを行います。

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,2"
MSComm1.PortOpen = True

こんな感じになりますね。

>130 PRINT #1, ″ ″ ′CLEAR UART BY SENDING SPACES

通信回路?のクリアの為、スペースを送信します。

MSComm1.Output = " "

>140 PRINT #1,″Z″ ′RESET SR510

SR510をリセットする為に、"Z"を送信(コマンドはマニュアルに記載されているはずです)

MSComm1.Output = "Z"

>150 FOR I = 1 TO 200: NEXT I ′WAIT FOR RESET TO FINISH

SR510がリセットされるまで、一定時間待機します。
これは、SR510がリセットされるまでに時間がかかる為に行う処理ですね。

Dim i As Long
For i = 1 To 200
 DoEvents
Next i

>170 X = 0 ′INIT X6 OUTPUT TO ZERO
>180 ′
>190 PRINT #1, ″Q″ ′READ OUTPUT
>200 INPUT #1,V1 ′INTO V1
>210 ′
>220 PRINT ″OUTPUT = ″;V1

"Q"を送信すれば、何かしらのデータが返されるので、それを受信して、
受信内容を表示していますね。

MSComm1.Output = "Q"
MSComm1.InputMode = comInputModeText
Dim V1 As String
V1 = MSComm1.Input

>240 X =X + .0025 ′INCREMENT X6 OUTPUT BY 2.5 MV
>250 IF X > 10 THEN X = 0 ′RESET X6 RAMP
>260 PRINT #1, USING ″X6, ##.###″;X ′SET X6 OUTPUT VOLTAGE

これがメインの処理?と思いますが、0から10まで0.0025づつ加算して
"X6, 99.999"(小数第三位?)の形式のデータを送信して、X6のVOLTAGE
を設定している?

X = X + 0.0025
If X > 10 Then X = 0
MSComm1.Output = "X6, " & Format(X, "##.###")

>280 GOTO 190 ′LOOP FOREVER

再度、190行("Q"を送信する箇所)より実行してループします。
------------------------------------------------------------------------------------

あくまで上記は参考意見なので、動作確認などは一切行っていないので・・・
上記コードをコピペしても動作しませんので、変数の定義などは適宜修正して下さいね。

投稿日時 - 2007-02-13 08:55:07

お礼

回答ありがとうございます。
こんなに詳しく回答をいただけるとは思っておらず
感激しております。
こんなに親切な方がこの世の中にいるとは夢にも思いませんでした。
感謝の言葉だけでは足りないことを悔やみつつこれからの
プログラム作りに励んで生きたいと思います。
このような形で出会えたことをいい形でまたの再会につなげられるように質問や、
得意な分野での回答に尽力をお互いに注いでいけるようにがんばりましょう。
長くなりましたが、感謝の言葉で最後を締めくくりたいと思います。
今回は本当にありがとうございました。
またどこかでお会いできることを祈っています。

投稿日時 - 2007-02-13 19:19:49

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問