ロックインアンプの制御プログラムを変換していただける方を探しています

このQ&Aのポイント
  • SRS社製のSR510ロックインアンプをRS232C経由でパソコンで制御するためのプログラムをVisual Basic 6.0に変換していただける方を探しています。
  • これはSR510ロックインアンプの出力を読み取り、X6アナログ出力を制御するプログラムです。
  • プログラムはIBM PC BASICAとCOM1: RS232ポートで動作します。
回答を見る
  • ベストアンサー

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

こんにちは。 どなたか下記のプログラムを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 他力本願でまことに申し訳ありませんが何とぞよろしくおねがいします。

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

  • ベストアンサー
  • unamana19
  • ベストアンサー率62% (56/89)
回答No.1

実機がないので、こちらでテストすることはできませんが、アドバイスとして書き込みます。 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"を送信する箇所)より実行してループします。 ------------------------------------------------------------------------------------ あくまで上記は参考意見なので、動作確認などは一切行っていないので・・・ 上記コードをコピペしても動作しませんので、変数の定義などは適宜修正して下さいね。

matsuhira
質問者

お礼

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

関連するQ&A

  • アンプの説明について

    素人ですので、どなたか簡単に教えてください。 ロードセルとアンプを譲ってもらい、使おうとしているのですが、アンプがよく分かりません。(ロードセルは、そのままADコンバータに繋げば計測できます) 電圧の入力は1チャンネルで、スイッチが、『0~20mV』・『0~200mV』・『0~1V』・『±200 mV』・『±20 mV』・『±1 V』に切りかえれます。 説明書には… Offsets the voltage so it is always in the range of 0 to 3.5 volts. When set to the 20 mV, 200 mV and 1 V positions, the amplification is set to 150, 15, and 3 respectively. The difference in voltage at the red and black terminal is amplified and output with reference to ground. When set to ±200 mV, ±20 mV, and ±1 V setting, the amplification is set to 75, 7.5 and 1.5 respectively. The difference in voltage at the red and black terminal is amplified and output with reference to 1.85 V. とあるのですが、これらの意味することがよく分かりません。 どなたか詳しい方がいましたら教えてください。よろしくお願いいたします。

  • N88互換BASICのプログラムについて。

    私は機械科3年ですが、今年からBASICを勉強しています。次のプログラムのエラー(行番号190にてopenしたファイルに出力できないです)がどうしても解決できないです。N88互換BASICやられている方でどなたか私にアドバイスをしていただけると助かります。 110 REM EX1B by E/F on 2006/04/25 120 PI=3.14159:PHI=30:Y0=.5 130 '************ Output into File ************ 140 CLOSE #1:OPEN "C:\WINBASIC\EX1B_OUT.TXT" FOR OUTPUT AS #1 150 FOR X=0 TO 360 STEP 45 160 A=.2 :Y1=A*SIN((X-PHI))+Y0 170 A=1.2 :Y2=A*SIN((X-PHI))+Y0 180 A=2 :Y3=A*SIN((X-PHI))+Y0 190 PRINT #1,X;",";Y1;",";Y2;",";Y3" 200 PRINT"Out:";X;",";Y1;",";Y2;",";Y3 210 NEXT X 220 CLOSE #1 230 '************ Input from File ************** 240 CLOSE #2:OPEN "C:\WINBASIC\EX1B_OUT.TXT" FOR INPUT AS #2 250 IF EOF(2)<>0 THEN GOTO 190 260 INPUT #2,X,Y1,Y2,Y3 270 PRINT"Inp:x=";X;" y1=";Y1;" y2=";Y2;" y3=";Y3;" 280 GOTO 150 290 CLOSE #2 300 '***** Close All Files and Computer Stop***** 310 CLOSE 320 END

  • 困っています

    どうしても、--unsigned型のビット内容表示--の所が意味が分かりません。分かりやすく教えてください。宜しくお願いします。 /* 0~UINT_MAXを2進・8進・16進で表示 */ #include <stdio.h> #include <limits.h> /*--- 整数xのセットされたビット数を返す ---*/ int count_bits(unsigned x) { int count =0; while (x) { if (x & 1u) count++; x>>=1; } return (count); } /*---- unsigned型のビット数を返す ----*/ int int_bits(void) { return (count_bits(~0U)); } /*---- unsigned型のビットを内容を表示 ---*/ void print_bits(unsigned x) { int i; for (i=int_bits() -1; i>=0; i--) putchar(((x>>i) & 1U) ? '1' : '0'); } int main(void) { unsigned i; for (i=0; i<UINT_MAX; i++) { print_bits(i); printf(" %6o %5u %4X\n", i, i, i); } return(0); }

  • 翻訳について

    今度英語で発表するのですが 波高値を200V、パルス幅を5msecとした状態で、レーザーヘッドと試験片の間の距離を変化させてレーザーを照射する。 この文章があってるかわかりません。 The distance between the laser head and the specimen is changed in the setstate that crest value was set to 200V and pulse width set to 5msec. The laser is irradiated in the state.

  • 中国の脅威、軍拡

    中国の脅威、軍拡 以下は中国の軍拡と脅威を論じたウォールストリート・ジャーナルに掲載された論文の冒頭です。 最後に出てくる、「日本およびイスラエルから参考にした政策」とは具体的には何を指しているのでしょうか。お分かりの方がいらっしゃったら、ご教示願いたいのですが。よろしくお願いします。 The United States and China are on a collision course in the Western Pacific. Far sooner than once anticipated, China will achieve effective military parity in Asia, general conventional parity, and nuclear parity. Then the short road to superiority will be impossible for it to ignore, as it is already on its way thanks to a brilliant policy borrowed from Japan and Israel.

  • 中国の軍拡

    中国の軍拡 以下はウォールストリート・ジャーナルに掲載された中国の軍拡を論じた論文の冒頭です。 最後の文の中の「日本およびイスラエルから参考にした政策」とは具体的には何を指しているのでしょう。お分かりの方がいらしたら、教えて頂きたいのですが。よろしくお願いします。 The United States and China are on a collision course in the Western Pacific. Far sooner than once anticipated, China will achieve effective military parity in Asia, general conventional parity, and nuclear parity. Then the short road to superiority will be impossible for it to ignore, as it is already on its way thanks to a brilliant policy borrowed from Japan and Israel.

  • N88互換BASICで変換したが使えません。その2

    140 DEF FNF4$(X$) =MID$(X$,1,2)+":"+MID$(X$,3,2)+":"+MID$(X$,5,2) 150 DEF FNF5!(X$,X) =VAL(MID$(X$,X)) 160 CLS 170 LOCATE 20,10 :PRINT "3)How many sensors will you use?" 180 LOCATE 20+40,10 :PRINT " " 190 LOCATE 20+40,10 :LINE INPUT KO.TR$ 200 KO.TR=VAL(KO.TR$) 210 IF KO.TR<1 OR KO.TR>30 THEN BEEP :GOTO 180 220 LOCATE 25,10 :PRINT "Ready to send data?" 230 LINE INPUT AA$ 240 IF AA$<>"" AND AA$<>"Y" AND AA$<>"y" THEN *END. 250 *MAIN.START 260 CLS 270 LOCATE 25,10 :PRINT "****Start*****" 280 LOCATE 70, 0 :PRINT TIME$; 290 ' 300 'Writting data to floppy 310 *DISK.SET 320 FFF$="B:"+FNF1$(DATE$,TIME$) 330 OPEN FFF$ FOR OUTPUT AS #1 340 PRINT #1,Q$+DATE$+Q$+R$+Q$+STR$(KO.TR)+Q$+R$ 'DATE$,SENSORS 350 CLOSE 360 ' 370 'Sampling data every 30 seconds 380 *TIME.30 390 CONSOLE 0,25

  • 凸集合かどうか証明する問題で困ってます

    The set of points closer to one set tahan another,i.e., {x|dist(x,S)=<dist(x,T)}, where S,Tはn次元,and dist(x,S)=inf{||x-z||2 |zがSに含まれる} どなたかお願いします。

  • 思い通りに動かせず、困っています

    ZIG100BeeモジュールとPIC12F675を2つずつ使って回路を作ろうとしているのですが、 ZIGBeeがどんなプログラムで動くのか、検索しても全く解りません。 送信側PIC 4ピン→1kΩ抵抗でプルアップ+スイッチ 7ピン→ZIGBeeTxDに接続 6ピン→ZIGBeeRxDに接続 受信側PIC 4ピン→ZIGBeeTxDに接続 5ピン→ZIGBeeRxDに接続 7ピン→LEDアノード側に接続 6ピン→ブザー+側に接続 このような回路で、送信側スイッチを押すと受信側LEDが点灯、ブザーが鳴るようにしたいのです。 送信側プログラム #include<12F675.h> #byte GPIO =0x09 #byte TRISTO =0x85 #byte CMCON = 0x19 #byte ANSEL =0x9F #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR,NOBROWNOUT #use delay(clock=4000000) #use rs232(BAUD=9600,xmit=PIN_A1,rcv=PIN_A0,bits=8) #use fast_io(a) void main() { set_tris_a(0x09); delay_ms(50); while(1){ if(input(PIN_A3)==0x00){ putc(0x00); delay_ms(50); output_A(0x09); } } } 受信側プログラム #include<12f675.h> #byte GPIO =0x05 #byte TRISTO =0x85 #byte CMCON = 0x19 #byte ANSEL = 0x9F #fuses INTRC_IO, NOWDT, PUT, NOPROTECT,NOMCLR,NOBROWNOUT #use delay(clock = 4000000) #use rs232(BAUD = 9600, XMIT = PIN_A2, RCV = PIN_A3,bits = 8) #use fast_io(A) void main() { set_tris_A(0x08); delay_ms(50); while(1) { if(input(PIN_A3)== 0x00) { if(kbhit()) { delay_ms(500); output_high(PIN_A0); delay_ms(500); output_low(PIN_A1); } } } } このようなプログラムにしたのですが、受信側が送信側の操作に反応せず、 電源プラグを挿しただけで動作してしまいました。 すみませんが、誰か解る方がいたら教えてくれませんか?

  • 和訳お願いします

    With X and XL fixed, as RL varies, the current phasor traverses the perimeter of the half circle, becoming equal to the magnetizing current when RL=∞. The value of load resistance for maximum power may be found by differentiating the expression for the per unit power output with respect to RL, and equating it to zero.

専門家に質問してみよう