バイナリをテキストファイルへ変換するには?取込データを保存するには?


ちょび  2007-03-05 09:07:25  No: 135636

先日、配列をバイナリモードで開いたファイルに「そのまま」書き込む方法をご伝授いただいたのですが、データの取り込みを終了した後に、テキスト形式に変換したいのです。どのようにすればよいのでしょうか?教えてください。

また、このままでは配列の書込みを同じ所に行うのですが、配列を取り込むたびに、データを溜めていきたい(新しい場所(名前)に保存したい)のです。どうすれば出来るのでしょうか?教えてください。




Private Sub Command1_Click()

    Dim i As Long
    Dim ff As Integer
    Dim d(1 To 10000) As Double

For i = LBound(d) To UBound(d)
        d(i) = Text1.Text
    Next
    ff = FreeFile()
    Open "C:\DATA\text1.txt" For Binary Access Write Lock Write As ff
        Put #ff, 1, d
    Close ff
End Sub


ちょび  2007-03-05 09:10:35  No: 135637

言い忘れていました。
開発環境はVB6.0  OS:WIN2000
VBはじめたばかりの超初心者です。皆様よろしくお願いいたします。


通り巣鴨  2007-03-05 09:41:53  No: 135638

こういうことですかね?
 Dim Buf(9) As Byte
    Buf(0) = &H82
    Buf(1) = &HA0
    Buf(2) = &H82
    Buf(3) = &HA2
    Buf(4) = &H82
    Buf(5) = &HA4
    Buf(6) = &H82
    Buf(7) = &HA6
    Buf(8) = &H82
    Buf(9) = &HA8
 Debug.Print StrConv(Buf, vbUnicode)
これで  
あいうえお
と表示されます。

>新しい場所(名前)に保存したい
既存のファイルを移動(リネーム)したいのか
それとも開いたファイルの出力先を変えたいのかどっちでしょうか?

前者でしたら
Name "hoge.txt" as "hogehoge.txt"
後者でしたら
openするときのパスを変える。


ちょび  2007-03-05 12:13:52  No: 135639

通り巣鴨様ご返答ありがとうございます。
質問時の私の言葉が足りませんでした。後者の  OPENするときのパスを変えるでOKです。

現状の質問にはかなり不足しているものがありました。
改めて質問させていただきます。
現在、
①データを配列に取込む。
→このときに1秒に1回データが入ってきます。これを最長72時間ぐらい連続して行います。このデータを随時保存したいのですがどうすればよいでしょうか?
②この連続したバイナリデータを、テキストデータに変換したいのですが、どのようにすればよいでしょうか?
このテキストデータへの変換は、配列にデータ取込が終了した時点で行う。
また、バイナリデータが分割して保存されているのをテキストデータ変換時に、連続した1つのデータにすることはできますでしょうか?

以上質問事項のわかり難いとこありましたら、また仰ってください。
よろしくお願いいたします。


通り巣鴨  2007-03-05 16:16:46  No: 135640

1、についてですが、なにがわからないのでしょうか?
ダブらないファイル名の作り方がわからないのですか?
でしたら自分で仕様を考えてくださいとしか言い用が無いような気がします。
参考程度に
Date関数で日付  Time関数で時間を取得できるので
フィイル名を日付+時間で良いような気がします。  

2、正直この説明は取り込んだデータはなに?って話になります。
データの変換が目的なのか、書きこみ方法の問題なのか
上の説明で答えになってないってことは書きこみ方式なんでしょうね。
ってな事で
Open "C:\DATA\text1.txt" For Binary Access Write Lock Write As ff

Open "C:\DATA\text1.txt" For output Access Write Lock Write As ff
にでもして書き込んでみてください。
putじゃ書き込めないので
write
やら
print
やらを使ってくださいね。


ちょび  2007-03-05 22:43:50  No: 135641

通り巣鴨様
度重なる質問時の意味のわからなさ大変申し訳ありません。

>正直この説明は取り込んだデータはなに?って話になります。

最初から詳しく説明していれば通り巣鴨様に何度もご説明いただくこともなかったのではないかと反省しております。以下もう一度説明させていただきます。

必要のない説明もあります。また、困っていること全てを書きます。

計測器(横河電気WE7000)より計測されたデータを取込みます。

計測器からのデータは、「モジュール」という4種類の計測器から送られてきます。そのうち2つのモジュールにはチャンネルが2つあり(2×2=4)、残り2つのモジュールにはチャンネルが1つずつあります。合計6種類のデータが送られてきます。
各モジュールより6種類のデータが10000個/秒送られてきます。
各モジュールより取込まれるデータ名
1  モータ回転数  (モジュール1−1ch)ScaleBuf1 
2  ポンプ流量    (モジュール1−2ch)ScaleBuf1 
3  騒音          (モジュール2−1ch)ScaleBuf2 
4  振動          (モジュール2−2ch)ScaleBuf2 
5  トルク        (モジュール3)    ScaleBuf3
6  油温          (モジュール4)    ScaleBuf4

①各モジュールのデータを4つの配列に取込み、その配列を1つのファイルへ保存したいです。

以下現状のコード(一部)
 
Option Explicit
Dim ScaleBuf1(0 To 10000, 0 To 1) As Double     ' 2ch用バッファ
Dim ScaleBuf2(0 To 10000, 0 To 1) As Double     ' 2ch用バッファ
Dim ScaleBuf3(0 To 10000, 0 To 0) As Double     ' 1ch用バッファ
Dim ScaleBuf4(0 To 10000, 0 To 0) As Double     ' 1ch用バッファ


recSize1 =8(バイト)*2(ch数)* 10000(個)’2ch用バッファのバイトサイズ
recSize2 =8 * 2 * 10000                      '2ch用バッファのバイトサイズ
recSize3 =8 *10000                          '1ch用バッファのバイトサイズ
recSize4 =8 *10000                          '1ch用バッファのバイトサイズ

Private Sub WE75211_WeBlock(ByVal blockNo As Long) 'モータ回転数、流量
Dim infoNum As Integer
Dim chNum As Integer
    Dim i As Integer
    Dim J As Integer
infoNum = 1
  chNum = 0
ret = WE75211.WeGetScaleData(-1, blockNo, recSize1, ScaleBuf1)   
 For J = 0 To 1    
        For i = 0 To 1
            If (WeIsNan(WE_DOUBLE, ScaleBuf1(i, J))) Then
                WaveBuff(i, J + chNum) = 0
                WaveBuff2(i, J + chNum) = 0
                WaveBuff3(i, J + chNum) = 0
            Else
                WaveBuff(i, J + chNum) = ScaleBuf1(i, J)
                WaveBuff2(i, J + chNum) = ScaleBuf1(i, J)
                WaveBuff3(i, J + chNum) = ScaleBuf1(i, J)
            End If
        Next i
    Next J
For i = 0 To 1  ’グラフ描画データ生成  モータ回転数
        WaveBuff(i, chNum) = RpmSamp
        WaveBuff2(i, chNum) = RpmSamp
        WaveBuff3(i, chNum) = RpmSamp
    Next i

For i = 0 To 1  'グラフ描画データ生成 流量
        WaveBuff(i, chNum + 1) = Mnt.Flow
        WaveBuff2(i, chNum + 1) = Mnt.Flow
        WaveBuff3(i, chNum + 1) = Mnt.Flow
    Next i
End Sub

同じく以下の3つも上記と同様のコードを作成しています。
ret = WE75211.WeGetScaleData(-1, blockNo, recSize2, ScaleBuf2)

ret = WE75211.WeGetScaleData(-1, blockNo, recSize3, ScaleBuf3)

ret = WE75211.WeGetScaleData(-1, blockNo, recSize4, ScaleBuf4)

②上記の各プロシージャの中に「ScaleBuf1〜4」を配列へ格納し、バイナリファイルへ保存しなさいという命令をすればよいのでしょうか?
それとも、別のプロシージャで配列へ格納し、バイナリファイル保存しなさいという命令をすればよいのでしょうか?

③バイナリファイルへ保存したデータファイルを計測終了後にテキストデータに変換し、変換後テキスト形式(CSV)に以下のように書き込みを行いたいです。
  計測時刻  モータ回転数  ポンプ流量  騒音  振動  トルク   油温
1 **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃
2  **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃
3  **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃
4  **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃
5  **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃
6  **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃
7  **:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃

10000**:**:::    ***rpm     ***l/min  **dB  **Hz  ***N/M  **℃

④書き込み時、CSVファイルへは60000行書き込んだところで、新しいファイルを作成し、
⑤ファイル名には、計測日時-1〜計測日時-999999999というよう名前を付けていきたいです。

現状はこんな感じです。
Private Sub Command1_Click()

Dim hFso As FileSystemObject        'ファイル作成時必要
Set hFso = New FileSystemObject     '〃
Dim intLoop As Integer              'ループ用変数
Dim strData2Info As String           'データ格納用変数


ファイルオープン
    Open strFilePath2 For Append As #10
    Print #10, strData2Info
    Close #10
'    行数カウントアップ
    lnglineCnt = lnglineCnt + 1

'    書き込み行数が設定値よりもオーバーしてないか  
  If lnglineCnt >= 60000 Then
'        オーバーしてたら、ファイルnoの添え字をカウントアップ
        lngFileNO = lngFileNO + 1
'        書き込み行数初期化
        lnglineCnt = 1
    
     '新しいファイルを作成する
   strFilePath2 = SetPath + ⑤(計測日時−1)+ ".csv"
        Dim hTextStream As TextStream
        Set hTextStream = hFso.CreateTextFile(strFilePath2)
        '不要になった時点で参照を解放する
        Set hFso = Nothing
        Set hTextStream = Nothing
    
    End If
  End Sub

以上長々とプログラムの内容を書きましたが今まで教えてもらったり、調べたりして作成したプログラムなので全てを理解して書けておりません。
意味のわからないところもあると思います。これから勉強していきたいと思っていますので、どうかご理解お願いいたします。


ガッ  2007-03-06 01:13:30  No: 135642

hm。。。
あんまり芳しくないかもしれませんが、とりあえずAPIを捕まえてきました
http://supercon.lbl.gov/jlizarazo/public/Yokogawa/WE7000/Instruction%20Manuals/Japanese/%E5%8F%96%E6%89%B1%E8%AA%AC%E6%98%8E%E6%9B%B8/IM707742-61J_030.pdf

で、ご説明の方ですが
正直、読み返してみましたか?


ガッ  2007-03-06 02:25:31  No: 135643

とりあえず憶測で作っている最中気づいたことがあったのでいろいろ書いておきます:

・CSVファイルに書き出す「測定時刻」というのは一体何者でしょうか?
たぶん全ての測定機器は、ブロックデータ単位でバラバラの時刻に通知してくるはずです。
つまり見かけ上の測定時刻はバラバラの値になるべきであり、一意に定めるべき方法がわかりません。

追伸
以下殺伐とした表現が続きます
※とりあえずマル付き文字はMacとの相性が悪いと聞いたことがあるので即刻辞めるべきでしょう。

> 2 上記の各プロシージャの中に「ScaleBuf1〜4」を配列へ格納し、バイナリファイルへ保存しなさいという命令をすればよいのでしょうか?
それとも、別のプロシージャで配列へ格納し、バイナリファイル保存しなさいという命令をすればよいのでしょうか?
どちらでもお好きなように。
それよりも問題は、この二つに絞った理由です。
(しかも私はこの二つの疑問の意味がよくわかっていません)

> 3 バイナリファイルへ保存したデータファイルを計測終了後にテキストデータに変換し、変換後テキスト形式(CSV)に以下のように書き込みを行いたいです。
その場合測定データだけではなく、「測定時刻」もどうにかして一緒に記憶しておかなければならないことはお分かりでしょうか?

> 必要のない説明もあります。また、困っていること全てを書きます。
全体像を明かせないのは仕方の無いことかもしれませんが、
そういう場合はそもそも全体像を部分省略して載せないことです。
日記帳ではないのですから、問題点を絞ってみてください。

(´・ω・`)機種依存なんてもういいよ


ちょび  2007-03-06 11:33:30  No: 135644

ガッさんご返答本当にありがとうございます。
上記の質問( 2007/03/05(月) 22:43:50)に間違いがあります。
ret=WE72511となっているところが間違いで以下が正しいです。

同じく以下の3つも上記と同様のコードを作成しています。
ret = WE72351.WeGetScaleData(-1, blockNo, recSize2, ScaleBuf2)

ret = WE72451.WeGetScaleData(-1, blockNo, recSize3, ScaleBuf3)

ret = WE72411.WeGetScaleData(-1, blockNo, recSize4, ScaleBuf4)

ガッさんには先日の質問よりお世話になっており大変恐縮しております。
わざわざAPIまで持ってきていただき、感謝の限りです。

※とりあえずマル付き文字はMacとの相性が悪いと聞いたことがあるので即刻辞めるべきでしょう。
申し訳ありません。以後、気をつけます。

APIのPDFですが、読んでいるのですが正直なところ、意味がわかっておりません。
致命的なのですが、特に引数の入力、戻り値の使い方が理解しきれておりません。

>CSVファイルに書き出す「測定時刻」というのは一体何者でしょうか?
> 3 バイナリファイルへ保存したデータファイルを計測終了後にテキストデータに変換し、変換後テキスト形式(CSV)に以下のように書き込みを行いたいです。
その場合測定データだけではなく、「測定時刻」もどうにかして一緒に記憶しておかなければならないことはお分かりでしょうか?

御察しのとおりです。どうすればいいのか考えましたが、以下のようなことは可能でしょうか?また、どのように書いていけばいいでしょうか?

計測開始したときの時間を00:00:00又はその時の時刻とし配列データを取り込み、保存していくと同時に時間を書き込めないでしょうか?

 > 2 上記の各プロシージャの中に「ScaleBuf1〜4」を配列へ格納し、バイナリファイルへ保存しなさいという命令をすればよいのでしょうか?
それとも、別のプロシージャで配列へ格納し、バイナリファイル保存しなさいという命令をすればよいのでしょうか?
どちらでもお好きなように。
それよりも問題は、この二つに絞った理由です。
(しかも私はこの二つの疑問の意味がよくわかっていません)

プロジェクトのどこに,計測器からのデータを、配列に取り込み、保存するプログラムを書くのが、理想的なのかがわからなかったのと、どう書けばよいかがわかりません。
二つに絞った理由というのもとくにはありません。思い浮かんだのがここかなと、思いましたので。

> 必要のない説明もあります。また、困っていること全てを書きます。
全体像を明かせないのは仕方の無いことかもしれませんが、
そういう場合はそもそも全体像を部分省略して載せないことです。
日記帳ではないのですから、問題点を絞ってみてください。

とりあえず、全体像を載せてみます。以下メインのフォームです。

Option Explicit
Dim KeikaHour As Long 'カウントダウン用
Dim KeikaMin As Long
Dim KeikaSec As Long
Dim KeikaHourB As Long 'カウントダウン用
Dim KeikaMinB As Long
Dim KeikaSecB As Long

Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Dim lngFileNO As Long       'DataInfoファイルのファイルno管理
Dim lnglineCnt As Long      '書き込み行数


Dim WaveBuff(0 To 1, 0 To 6) As Double
Dim WaveBuff2(0 To 1, 0 To 6) As Double
Dim WaveBuff3(0 To 1, 0 To 6) As Double
Dim BlockEnd(0 To 3) As Boolean
Dim ret As Integer
Dim recSize1 As Long
Dim recSize2 As Long
Dim ScaleBuf1(0 To 1, 0 To 1) As Double         ' WE75211.WeGetScaleData用バッファ(1chモータ回転数・2chポンプ流量)
Dim ScaleBuf2(0 To 1, 0 To 1) As Double         ' WE72351.WeGetScaleData用バッファ(1ch振動・2ch騒音)
Dim ScaleBuf3(0 To 1, 0 To 0) As Double         ' WE72451.WeGetScaleData用バッファ(トルク)
Dim ScaleBuf4(0 To 1, 0 To 0) As Double         ' WE72411.WeGetScaleData用バッファ(油温)


Dim WaveGrBuff(0 To 1, 0 To 6) As Double        'グラフ描画用バッファ1 070214
Dim WaveGrBuff2(0 To 1, 0 To 6) As Double       'グラフ描画用バッファ2 070214
Dim WaveGrBuff3(0 To 1, 0 To 6) As Double       'グラフ描画用バッファ3 070214

'運転準備確認SW
Private Sub Command3_Click()


    If DioIn(1) = 1 Then
        WEButton1_On (0)

    End If

End Sub


Private Sub Form_Load()
    Dim fname0 As String
    Dim hFso As FileSystemObject        'ファイル作成時必要
    Set hFso = New FileSystemObject     '〃
    
    
    '変数の初期化
    lngFileNO = 1
    lnglineCnt = 1
    
    '測定時間、回転数のファイル読込 070205
    fname0 = SetPath & "Setting.prm"
    On Error GoTo Openerror     'ファイルオープンに失敗した場合、初期設定画面を開く
    Open fname0$ For Input As #1

       
        Input #1, SeqRev

    Close #1
    
Openerror:
    

    
    frmSetting.Show
    '現在値初期化
    Mnt.Rpm = 0: Mnt.Vibr = 0: Mnt.Noise = 0: Mnt.Trq = 0: Mnt.Temp = 0: Mnt.Flow = 0
    RpmTotal = 0: RpmSamp = 0: RpmSmpCnt = 0
    MntTotal = 0
    MntSmpCnt = 0
    Mnt.Noise2 = 0

frmSetting.NowTemp.Text = Mnt.Temp
frmSetting.call1_Click
frmSetting.SET_Click (0)

Call Command3_Click '運転準備  電源ON
Timer4.Enabled = True

End Sub


Private Sub cmdInputSingle_Click()

End Sub

Private Sub Check1_Click(Index As Integer)
    
    
    If (Index < 14 Or Index > 20) Then
        Exit Sub
    End If
    
    Dim LineIndex As Integer
    
        LineIndex = Index - 14
    If (WEGraph1.LineDispFlag(LineIndex)) Then
        WEGraph1.LineDispFlag(LineIndex) = False    ' 線を非表示に
    
    Else
        WEGraph1.LineDispFlag(LineIndex) = True     ' 線を表示に
  End If
    
    If (WEGraph2.LineDispFlag(LineIndex)) Then
        WEGraph2.LineDispFlag(LineIndex) = False    ' 線を非表示に
    
    Else
        WEGraph2.LineDispFlag(LineIndex) = True     ' 線を表示に
  End If
    
   If (WEGraph3.LineDispFlag(LineIndex)) Then
        WEGraph3.LineDispFlag(LineIndex) = False    ' 線を非表示に
    
    Else
        WEGraph3.LineDispFlag(LineIndex) = True     ' 線を表示に
  End If
   
End Sub

'異常発生時のOUT設定
'*******************
'(異常リセット)
Private Sub Command2_Click()
    Dim i As Long
   

Beep

ER3.Caption = ""
ER4.Caption = ""
ER5.Caption = ""
ER6.Caption = ""
ER7.Caption = ""
ER8.Caption = ""
ER9.Caption = ""
ER10.Caption = ""

Call DioOut(4, 1, "m")  '異常リセット
For i = 0 To LoopMax: Next i

Call DioOut(1, 1, "a")  '測定準備完了ON出力
Call DioOut(3, 0, "a")  '測定終了OFF出力*:::::*:***************************
MntTotal = 0
MntSmpCnt = 0
Mnt.Noise2 = 0
Mnt.Noise1 = 0
Mnt.Noise = 0




End Sub




Private Sub mnuWE7235_Click(Index As Integer)
Dim hWnd As Long
Dim asw As Integer
    
          ret = WE72351.WeIsModuleWindow(asw)             'WE7235のパネルが開いているかを調べます。
    If asw = 0 Then
          ret = WE72351.WeShowModuleWindow(hWnd)      'WE7235パネルを開きます。
    Else
          ret = WE72351.WeCloseModuleWindow()         'WE7235パネルを閉じます。
    End If
End Sub

Private Sub mnuWE7241_Click(Index As Integer)
Dim hWnd As Long
    Dim asw As Integer
    
          ret = WE72411.WeIsModuleWindow(asw)             'WE7241のパネルが開いているかを調べます。
    If asw = 0 Then
          ret = WE72411.WeShowModuleWindow(hWnd)      'WE7241パネルを開きます。
    Else
          ret = WE72411.WeCloseModuleWindow()         'WE7241パネルを閉じます。
    End If
End Sub

Private Sub mnuWE7245_Click(Index As Integer)
Dim hWnd As Long
    Dim asw As Integer
    
          ret = WE72451.WeIsModuleWindow(asw)             'WE7245のパネルが開いているかを調べます。
    If asw = 0 Then
          ret = WE72451.WeShowModuleWindow(hWnd)      'WE7245パネルを開きます。
    Else
          ret = WE72451.WeCloseModuleWindow()         'WE7245パネルを閉じます。
    End If
End Sub

Private Sub mnuWE7521_Click()
Dim asw As Integer
Dim hWnd As Long
        ret = WE75211.WeIsModuleWindow(asw)             'WE7521のパネルが開いているかを調べます。
 
    If asw = 0 Then
        ret = WE75211.WeShowModuleWindow(hWnd)      'WE7521パネルを開きます。
    Else
        ret = WE75211.WeCloseModuleWindow()         'WE7521パネルを閉じます。
    End If
End Sub


Private Sub mnuインバータ電源_Click()
Form2.Show

End Sub

'仮想現在値設定(納品前に消す)
Private Sub mnu仮想_Click(Index As Integer)
Form5.Show
End Sub


'データサンプリング設定画面
Private Sub mnu設定_Click(Index As Integer)
Form3.Show
End Sub
'トリガレベル設定画面
Private Sub mnu設定値_Click(Index As Integer)
frmSetting.Show
End Sub

'WE7000電源ON
Private Sub WEButton1_On(Index As Integer)
Dim ret As Long
Timer1.Enabled = True
  WEComm1.WeInit                  'WE7000との通信を確立します。
    WEStation1.WeOpenStationEx      'WE7000のステーションとモジュールの使用を開始します。

    WE72411.stMode = WE_EV_BLOCKEND
'    WE72411.WeStart
    WE72451.stMode = WE_EV_BLOCKEND
'    WE72451.WeStart
    WE72351.stMode = WE_EV_BLOCKEND
'    WE72351.WeStart
    WE75211.stMode = WE_EV_BLOCKEND
'    WE75211.WeStart
    Dim i As Integer
    Dim J As Integer
    For i = 0 To 3              ' ブロックデータバッファ用ステータスの初期化************
        BlockEnd(i) = False    '**********************************
        For J = 0 To 1
            WaveBuff(J, i) = 0#
            WaveBuff2(J, i) = 0#
            WaveBuff3(J, i) = 0#
        Next J
    Next i
'**************************************
    recSize1 = 8 * 10000        '1ch用バッファのバイトサイズ
    recSize2 = 8 * 2 * 10000    '2ch用バッファのバイトサイズ
'**************************************

Call DioOut(1, 1, "a")  '測定準備完了ON出力

ER11.Caption = "電源ON"
ER12.Caption = ""

End Sub
'WE7000電源OFF
Private Sub WEButton1_Off(Index As Integer)
    Dim ret As Long
    Call DioOut(1, 0, "a")  '測定準備完了OFF出力
    ret = WEStation1.WeSaveSetup("")
    
    WEStation1.WePower 0            'WE7000の電源をOFFにします。
    WEStation1.WeCloseStation       'WE7000のステーションとモジュールの使用を終了します。
    WEComm1.WeExit                  'WE7000との通信を解除します。

    ER11.Caption = ""
    ER12.Caption = "電源OFF"
    
    Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()  '時計表示
     KeikaSecB = KeikaSecB + 1

    If KeikaSecB = 60 Then
        KeikaMinB = KeikaMinB + 1
        KeikaSecB = 0
        If KeikaMinB = 60 Then
            KeikaHourB = KeikaHourB + 1
            KeikaMinB = 0
        End If
    End If
    
    Text12.Text = Format(KeikaHourB, "00") + ":" + Format(KeikaMinB, ("00")) + ":" + Format(KeikaSecB, "00")
   If DioIn(2) = 0 Then '計測開始OFF
        Call WEButton2_Off
        Timer4.Enabled = True
        Timer7.Enabled = False
        
   
   End If

End Sub


 Private Sub Timer4_Timer()
 Dim nRet As Long                '関数の実行結果



    If DioIn(2) = 1 Then   'DioInpBuf (0): 運転準備


    Call WEButton2_On
         Timer4.Enabled = False   'WEButton ONで、タイマー停止 ’
         Timer7.Enabled = True  '計測開始でカウントダウン、異常入力監視開始
    ElseIf DioIn(2) = 0 Then
         Call WEButton2_Off

         Timer4.Enabled = True    'WEButton OFFで、タイマー再開 ’
   
   If DioIn(1) = 0 Then '計測開始OFF
        Call WEButton2_Off
        Timer4.Enabled = True

End If
    Else

        Exit Sub
    End If

End Sub

Private Sub ResetData_Click()
    Call WEGraph1.ResetData         'グラフに設定しているデータを消去します。
End Sub


Private Sub WE75211_WeBlock(ByVal blockNo As Long)  'モータ回転数、流量
    Dim infoNum As Integer
    Dim chNum As Integer
    Dim i As Integer
    Dim J As Integer
    Dim spanX As Double '回転数直線式用X軸スパン
    Dim gainX As Double '回転数直線式用X軸ゲイン
    Dim spanY As Double '回転数直線式用y軸スパン
    Dim gainY As Double '回転数直線式用y軸ゲイン
    
   
  infoNum = 1
  chNum = 0
    

 
 'データ取得
    ret = WE75211.WeGetScaleData(-1, blockNo, recSize2, ScaleBuf2)   'データを取り出します。
 
   ScaleBuf1(0 To 10000, 0 To 1)
    
    For J = 0 To 1
        For i = 0 To 1
            If (WeIsNan(WE_DOUBLE, ScaleBuf2(i, J))) Then
                WaveBuff(i, J + chNum) = 0
                WaveBuff2(i, J + chNum) = 0
                WaveBuff3(i, J + chNum) = 0
            Else
                WaveBuff(i, J + chNum) = ScaleBuf2(i, J)
                WaveBuff2(i, J + chNum) = ScaleBuf2(i, J)
                WaveBuff3(i, J + chNum) = ScaleBuf2(i, J)
            End If
        Next i
    Next J
    
    
'モータ回転数計算式++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    'モータ回転数:120rpm---2000pps----(3440rpm)
    'インバータパラメータPr.55=86.4Hz(1440pps出力時の周波数[120*1440/2000=86.4])

    'RpmSamp = WaveBuff(1, chNum) / 2000 * 3440
    '実測値とモニタ値をあわす為計算式を求める
    spanX = 93: gainX = 2451    '現在値
    spanY = 90: gainY = 2488    '実測値
    Text6.Text = ((gainY - spanY) / (gainX - spanX)) * ((WaveBuff(1, chNum) / 2000 * 3440) - spanX) + spanY
    
    RpmSamp = ((gainY - spanY) / (gainX - spanX)) * ((WaveBuff(1, chNum) / 2000 * 3440) - spanX) + spanY
    For i = 0 To 1  'グラフ描画データ生成 070214
        WaveGrBuff(i, chNum) = RpmSamp
        WaveGrBuff2(i, chNum) = RpmSamp
        WaveGrBuff3(i, chNum) = RpmSamp
    Next i
    
    If RpmSamp > 0 Then
        RpmTotal = RpmTotal + RpmSamp
        RpmSmpCnt = RpmSmpCnt + 1
        If RpmSmpCnt >= 10 Then
            Mnt.Rpm = Format(RpmTotal / 10, "0")
            RpmTotal = 0
            RpmSmpCnt = 0
        End If
    Else
        Mnt.Rpm = 0
    End If
    


'流量計算式++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    '流量計出力:6900pulse/L---モジュールに入力される信号はHz
    'つまり1秒あたりのパルス数のため、60倍して1分当りのパルス数を出して6900で割るとL/minが算出される
    
'    Text3.Text = WaveBuff(1, chNum + 1)
    
    Text3.Text = Format(WaveBuff(1, chNum + 1) * 60 / 6900, "#0.000")
    
    Mnt.Flow = Format(WaveBuff(1, chNum + 1) * 60 / 6900, "#0.000")
    For i = 0 To 1  'グラフ描画データ生成 070214
        WaveGrBuff(i, chNum + 1) = Mnt.Flow
        WaveGrBuff2(i, chNum + 1) = Mnt.Flow
        WaveGrBuff3(i, chNum + 1) = Mnt.Flow
    Next i

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Text1(0).Text = Mnt.Rpm
    Text1(5).Text = Mnt.Flow
    
    
  
  '  アラーム監視  7521-1(モータ回転異常発報)
 If Mnt.Rpm < rpmA Or rpmB < Mnt.Rpm Then
   '現在値    下限    上限    現在値
'    Text5.Text = rpmA: Text7.Text = rpmB
                                                                                  
    ER3.Caption = "モータ回転数異常"
    Call WEButton2_Off
    Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:***********************
   
 
 End If


'  アラーム監視  7521-2(ポンプ流量異常発報)
 If Mnt.Flow < LA Or LB <= Mnt.Flow Then
    '現在値    下限  上限    現在値
    
                                                                                                
        ER4.Caption = "ポンプ流量異常"

        Call WEButton2_Off
        Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:*****************
  
  'データチェック& 表示
 If BlockStatusCheck(3) Then
        Call WaveformDisp
    
    
 End If

End Sub
Private Sub WE72351_WeBlock(ByVal blockNo As Long)  '振動、騒音
    Dim infoNum As Integer
    Dim chNum As Integer
    Dim i As Integer
    Dim J As Integer


infoNum = 1
chNum = 2

 'データ取得
    ret = WE72351.WeGetScaleData(-1, blockNo, recSize2, ScaleBuf2) 'データを取り出します。

     
    For J = 0 To 1
    For i = 0 To 1
            WaveBuff(i, J + chNum) = ScaleBuf2(i, J)
            WaveBuff2(i, J + chNum) = ScaleBuf2(i, J)
            WaveBuff3(i, J + chNum) = ScaleBuf2(i, J)
        Next i
    Next J
'    Text4(1).Text = Format(WaveBuff(1, chNum), "#0.0")
'    Text4(2).Text = Format(WaveBuff(1, chNum + 1), "#0.00")
    
    
    Text4(1).Text = WaveBuff(1, chNum) '生データ
    Mnt.Vibr = Format((WaveBuff(1, chNum) / 0.00504), "#0.00")       '振動(m/sec2)=入力/0.00504V
    
    
    
    For i = 0 To 1  'グラフ描画データ生成 070214
        WaveGrBuff(i, chNum) = Abs(Mnt.Vibr)
        WaveGrBuff2(i, chNum) = Abs(Mnt.Vibr)
        WaveGrBuff3(i, chNum) = Abs(Mnt.Vibr)
    Next i
    
    Text4(2).Text = Format(WaveBuff(1, chNum + 1), "#0.00") '生データ
    Mnt.Noise1 = Format((WaveBuff(1, chNum + 1) * 94 / 2.535), "#0.0") '騒音(dB)=入力*94dB/2.535V)
    
    Mnt.Noise2 = Abs(Mnt.Noise1)
  If Mnt.Noise2 < 60 = Mnt.Noise2 > 120 Then
    Mnt.Noise2 = 85
  Else

  
  End If
     
  If Mnt.Noise2 > 60 Then
        MntTotal = MntTotal + Mnt.Noise2
        MntSmpCnt = MntSmpCnt + 1
  If MntSmpCnt >= 35 Then
            Mnt.Noise = Format(MntTotal / 35, "0")
            MntTotal = 0
            MntSmpCnt = 0
  End If
    Else
    End If
    
 
  
    
    For i = 0 To 1  'グラフ描画データ生成 070214
        WaveGrBuff(i, chNum + 1) = Mnt.Noise
        WaveGrBuff2(i, chNum + 1) = Mnt.Noise
        WaveGrBuff3(i, chNum + 1) = Mnt.Noise
    Next i
  
    
    Text1(1).Text = Abs(Mnt.Vibr)
    Text1(2).Text = Mnt.Noise





'  アラーム監視    7235-1(振動異常発報)
    
 If Abs(Mnt.Vibr) < HzA Or HzB < Abs(Mnt.Vibr) Then
     '現在値        下限    上限        現在値
                                                                            
      ER5.Caption = "振動測定値異常"
      Call WEButton2_Off
      Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:*********************
   
  
  End If


'  アラーム監視    7235-2(騒音異常発報)
 If Mnt.Noise < dbA Or DbB < Mnt.Noise Then
    '現在値    下限    上限    現在値
    
                                                                              
   ER6.Caption = "騒音測定値異常"
   Call WEButton2_Off
   Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:*************************
  End If


' データチェック&表示
    If BlockStatusCheck(2) Then
        Call WaveformDisp
    End If
End Sub

Private Sub WE72451_WeBlock(ByVal blockNo As Long)  'トルク測定
    'Dim strFilePath2 As String           'ファイルパス
    Dim intLoop As Integer              'ループ用変数
    Dim strData2Info As String           'データ格納用変数
    Dim hFso As FileSystemObject        'ファイル作成時必要
    Set hFso = New FileSystemObject     '〃
    Dim infoNum As Integer
    Dim chNum As Integer
    Dim i
      
 infoNum = 1
 chNum = 4


' データ取得
    ret = WE72451.WeGetScaleData(-1, blockNo, recSize1, ScaleBuf1)   'データを取り出します。


    For i = 0 To 1
        WaveBuff(i, chNum) = ScaleBuf1(i, 0)
        WaveBuff2(i, chNum) = ScaleBuf1(i, 0)
        WaveBuff3(i, chNum) = ScaleBuf1(i, 0)
    Next i
    
    For i = 0 To 1
        WaveBuff(i, chNum) = ScaleBuf1(i, 0)
        WaveBuff2(i, chNum) = ScaleBuf1(i, 0)
        WaveBuff3(i, chNum) = ScaleBuf1(i, 0)
    Next i
    
    'トルク変換器定格 1.501mV/V---500N・m
    Text4(3).Text = Format(WaveBuff(1, chNum) * 500 / 1.501, "#0.0")
    
    
    Mnt.Trq = Format(WaveBuff(1, chNum) * 500 / 1.501, "#0.0")
    For i = 0 To 1  'グラフ描画データ生成 070214
        WaveGrBuff(i, chNum) = Abs(Mnt.Trq) '   Absを使用して-数値を+へ転じさせる。
        WaveGrBuff2(i, chNum) = Abs(Mnt.Trq)
        WaveGrBuff3(i, chNum) = Abs(Mnt.Trq)
    Next i
    
'    Text4(3).Text = Mnt.Trq
     Text1(3).Text = Abs(Mnt.Trq) '   Absを使用して-数値を+へ転じさせる。
     


'  アラーム監視  7245    (トルク測定値異常発報)
    If Abs(Mnt.Trq) < NMA Or NMB < Abs(Mnt.Trq) Then
     
           '現在値            下限            上限          現在値
       
      ER7.Caption = "トルク測定値異常"
      Call WEButton2_Off
      Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:**************************************
    End If

' データチェック&表示
    If BlockStatusCheck(1) Then
        Call WaveformDisp
    End If
    
End Sub

Private Sub WE72411_WeBlock(ByVal blockNo As Long)  '温度計測
    Dim infoNum As Integer
    Dim chNum As Integer
    Dim Temp As Double
    Dim i
    Dim strMsg As Long
 
 infoNum = 1
   chNum = 5

 ' データ取得
    ret = WE72411.WeGetScaleData(-1, blockNo, recSize1, ScaleBuf1)   'データを取り出します。

    
 
   
    For i = 0 To 1
        If (WeIsNan(WE_DOUBLE, ScaleBuf1(i, 0)) = False) Then
        WaveBuff(i, chNum) = ScaleBuf1(i, 0)
        WaveBuff2(i, chNum) = ScaleBuf1(i, 0)
        WaveBuff3(i, chNum) = ScaleBuf1(i, 0)
        Else
            WaveBuff(i, chNum) = 0#
            WaveBuff2(i, chNum) = 0#
            WaveBuff3(i, chNum) = 0#
        End If
    Next i

    
                                             
    
    Mnt.Temp = Format(WaveBuff(1, chNum), "#0.0")
    For i = 0 To 1  'グラフ描画データ生成 070214
        WaveGrBuff(i, chNum) = Mnt.Temp
        WaveGrBuff2(i, chNum) = Mnt.Temp
        WaveGrBuff3(i, chNum) = Mnt.Temp
    Next i
    
    Text1(4).Text = Mnt.Temp
  
'  アラーム監視      7241    (油温異常発報)
     If Mnt.Temp < CA Or CB <= Mnt.Temp Then
             '現在値          下限          上限              現在値
       
       ER8.Caption = "ポンプ油温異常"
       Call WEButton2_Off
     End If
     
     If (Val(Mnt.Temp)) > Val(frmSetting.Tlv(13).Text) Then
             '現在値                  上限
       Call DioOut(7, 1, "a")  '冷却FAN回転
       
     End If
    
    If (Val(Mnt.Temp)) < Val(frmSetting.Tlv(14).Text) Then
             '現在値                  下限
       Call DioOut(7, 0, "a")  '冷却FAN回転停止
       
     End If
  
' データチェック&表示
     If BlockStatusCheck(0) Then
        Call WaveformDisp
     End If
    
End Sub

Private Function BlockStatusCheck(kind As Integer) As Boolean
    
    BlockEnd(kind) = True
    Dim i As Integer
    For i = 0 To 3
        If (BlockEnd(i) = False) Then
            BlockStatusCheck = False  ' まだ測定完了していないモジュールあり
            Exit Function
        End If
    Next i
    For i = 0 To 3
        BlockEnd(i) = False
    Next i
    BlockStatusCheck = True  ' 全モジュールのブロックデータがそろった
 
End Function

Private Sub WaveformDisp()

'生データによるグラフ描画
'    Call WEGraph1.SetChartData(WaveBuff)
'    Call WEGraph2.SetChartData(WaveBuff2)
'    Call WEGraph3.SetChartData(WaveBuff3)

'変換後データによるグラフ描画 0702147
    Call WEGraph1.SetChartData(WaveGrBuff)
    Call WEGraph2.SetChartData(WaveGrBuff2)
    Call WEGraph3.SetChartData(WaveGrBuff3)


End Sub

Private Sub WE7521Panel_Click(Index As Integer)
    Dim asw As Integer
    
    ret = WE75211.WeIsModuleWindow(asw)             'WE7521のパネルが開いているかを調べます。
 Dim hWnd As Long
    If asw = 0 Then
        ret = WE75211.WeShowModuleWindow(hWnd)      'WE7521パネルを開きます。
    Else
        ret = WE75211.WeCloseModuleWindow()         'WE7521パネルを閉じます。
    End If
End Sub
Private Sub WE7235Panel_Click(Index As Integer)
 Dim hWnd As Long
    Dim asw As Integer
    
    ret = WE72351.WeIsModuleWindow(asw)             'WE7235のパネルが開いているかを調べます。
    If asw = 0 Then
        ret = WE72351.WeShowModuleWindow(hWnd)      'WE7235パネルを開きます。
    Else
        ret = WE72351.WeCloseModuleWindow()         'WE7235パネルを閉じます。
    End If
End Sub
Private Sub WE7245Panel_Click(Index As Integer)
 Dim hWnd As Long
    Dim asw As Integer
    
    ret = WE72451.WeIsModuleWindow(asw)             'WE7245のパネルが開いているかを調べます。
    If asw = 0 Then
        ret = WE72451.WeShowModuleWindow(hWnd)      'WE7245パネルを開きます。
    Else
        ret = WE72451.WeCloseModuleWindow()         'WE7245パネルを閉じます。
    End If
End Sub

Private Sub WE7241Panel_Click(Index As Integer)
 Dim hWnd As Long
    Dim asw As Integer
    
    ret = WE72411.WeIsModuleWindow(asw)             'WE7241のパネルが開いているかを調べます。
    If asw = 0 Then
        ret = WE72411.WeShowModuleWindow(hWnd)      'WE7241パネルを開きます。
    Else
        ret = WE72411.WeCloseModuleWindow()         'WE7241パネルを閉じます。
    End If
End Sub
'計測終了
Public Sub WEButton2_Off()



    ret = WE72411.WeStop()                          'データ収集を終了します。
    ret = WE72451.WeStop()
    ret = WE72351.WeStop()
    ret = WE75211.WeStop()
  Timer7.Enabled = False   'WEButton offで、カウントダウン停止’
  Timer5.Enabled = False

   
   Call DioOut(2, 0, "a")  '測定中OFF 出力
  
   ER1.Caption = ""
   ER2.Caption = "計測停止"
End Sub
'計測開始
Public Sub WEButton2_On()
Dim hFso As FileSystemObject        'ファイル作成時必要
Set hFso = New FileSystemObject     '〃


 ret = WE72411.WeStart() 'データ収集を開始します。
 ret = WE72451.WeStart()
 ret = WE72351.WeStart()
 ret = WE75211.WeStart()
    
   
 Timer7.Enabled = True   'WEButton ONで、カウントダウン開始、異常監視開始
    
    
    Call DioOut(3, 0, "m")  '測定終了出力OFF
    Call DioOut(2, 1, "a")  '測定中ON出力
    ER1.Caption = "計測中"
    ER2.Caption = ""
 
If Timer5.Enabled = False Then
        Timer5.Enabled = True
        
        '新しいファイルを作成する
        strFilePath2 = SetPath + Format(Now(), "yymmddhhmmss") + ".csv"
        Dim hTextStream As TextStream
        Set hTextStream = hFso.CreateTextFile(strFilePath2)
        '不要になった時点で参照を解放する
        Set hFso = Nothing
        Set hTextStream = Nothing
    Else
        Timer5.Enabled = False
    End If
    
End Sub

'データ保存設定(CSVへ)
Private Sub Timer5_Timer()
Dim hFso As FileSystemObject        'ファイル作成時必要
Set hFso = New FileSystemObject     '〃
Dim intLoop As Integer              'ループ用変数
Dim strData2Info As String           'データ格納用変数

'    データ取得
    For intLoop = 0 To 5
        If intLoop = 0 Then
            strData2Info = strData2Info + Format(Now, "hh:mm:ss") + ","
        End If
        strData2Info = strData2Info + Text1(intLoop).Text + ","
    Next

'    ファイルオープン
    Open strFilePath2 For Append As #10
    Print #10, strData2Info
    Close #10
'    行数カウントアップ
    lnglineCnt = lnglineCnt + 1

'*************'この下が追加個所**************************
'    書き込み行数が設定値よりもオーバーしてないか*******************************************
    If lnglineCnt >= 60000 Then
'        オーバーしてたら、ファイルnoの添え字をカウントアップ
        lngFileNO = lngFileNO + 1
'        書き込み行数初期化
        lnglineCnt = 1
    
     '新しいファイルを作成する
        strFilePath2 = SetPath + Format(Now(), "yymmddhhmmss") + ".csv"
        Dim hTextStream As TextStream
        Set hTextStream = hFso.CreateTextFile(strFilePath2)
        '不要になった時点で参照を解放する
        Set hFso = Nothing
        Set hTextStream = Nothing
    
    End If
End Sub


'タイマー7  計測時間、シーケンサー、インバータ異常コード監視
'07.02.16  モータ容量不足のためインバータ異常(定格オーバーし異常発報するためKILL。5,6,9)
'07.02.26 解除
Private Sub Timer7_Timer()

    KeikaSec = KeikaSec + 1

    If KeikaSec = 60 Then
        KeikaMin = KeikaMin + 1
        KeikaSec = 0
        If KeikaMin = 60 Then
            KeikaHour = KeikaHour + 1
            KeikaMin = 0
        End If
    End If
    
    keisokujikan.Text = Format(KeikaHour, "00") + ":" + Format(KeikaMin, ("00")) + ":" + Format(KeikaSec, "00")
    
    
    If SetteiTime = keisokujikan.Text Then
        Call WEButton2_Off
        Call DioOut(3, 1, "m") '****************************************************
        MsgBox "計測終了"
        Call DioOut(3, 0, "m") '****************************************************
   Timer4.Enabled = True
   frmSetting.NowTemp.Text = Mnt.Temp
   frmSetting.call1_Click
   keisokujikan.Text = ""
   KeikaSec = 0
   KeikaMin = 0
   KeikaHour = 0
   frmSetting.SET_Click (0)
   
    
    
    End If




 If DioIn(4) = 1 Then    'DioInBuf (4): 異常(PLCバッテリー寿命)
        Call WEButton2_Off
        Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:*************************
        Timer7.Enabled = False   '異常中、タイマー停止
      Form8.Show
 ElseIf DioIn(4) = 0 Then

 End If

'DioInpBuf (5): 異常 (PLCヒューズ断線)
If DioIn(5) = 1 Then   'DioInpBuf (5): 異常(シーケンサエラー)
         Call WEButton2_Off
         Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:************************
         Timer7.Enabled = False   '異常中、タイマー停止
         Form9.Show
 ElseIf DioIn(5) = 0 Then

 End If

 If DioIn(6) = 1 Then   'DioInpBuf (6): 異常(シーケンサエラー)
          Call WEButton2_Off
          Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:***********************
          Timer7.Enabled = False   '異常中、タイマー停止
          Form10.Show
 ElseIf DioIn(6) = 0 Then

  End If

 If DioIn(7) = 1 Then   'DioInpBuf (7): 異常(潤滑ポンプモータ過負荷)
         Call WEButton2_Off
         Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:************************
         Timer7.Enabled = False   '異常中、タイマー停止
         Form11.Show
 ElseIf DioIn(7) = 0 Then

 End If

 If DioIn(8) = 1 Then   'DioInpBuf (8): 異常(冷却ファンモータ過負荷)
         Call WEButton2_Off
         Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:************************
         Timer7.Enabled = False   '異常中、タイマー停止
         Form12.Show
 ElseIf DioIn(8) = 0 Then

  End If

 If DioIn(9) = 1 Then   'DioInpBuf (9): 異常(歯車回転インバータ異常)
         Call WEButton2_Off '**************************************************
         Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:************************
         Timer7.Enabled = False   '異常中、タイマー停止
         Form13.Show
 
 
 ElseIf DioIn(9) = 0 Then

  End If

If DioIn(10) = 1 Then   'DioInpBuf (10): 異常(非常停止ボタンON )
        Call WEButton2_Off
        Call DioOut(3, 1, "a")  '測定終了出力ON*:::::*:**************************
        Timer7.Enabled = False   '異常中、タイマー停止’
        Form14.Show
ElseIf DioIn(10) = 0 Then

End If
End Sub


ガッ  2007-03-07 10:02:06  No: 135645

※返信しようかかなり迷いました。
  多分次の返信は可能性がかなり薄いです。
  すみません
※1スレ1質問…

> プロジェクトのどこに,計測器からのデータを、配列に取り込み、保存するプログラムを書くのが、理想的なのかがわからなかったのと、どう書けばよいかがわかりません。
私もそばに居ない身なので、理想的なのはわかりません。
ただ、元のご質問は「既に配列としてのデータが存在している」状況での質問だったと記憶しています。
その辺りから、もう一度理解しなおしてみてはいかがでしょう?


追伸
> > 必要のない説明もあります。また、困っていること全てを書きます。
> > 全体像を明かせないのは仕方の無いことかもしれませんが、
> > そういう場合はそもそも全体像を部分省略して載せないことです。
> > 日記帳ではないのですから、問題点を絞ってみてください。
> とりあえず、全体像を載せてみます。以下メインのフォームです。
良く理解していらっしゃらないようですので、
「問題点を絞ってみてくだささい」ということです。
さらに言えば、完成された全体像がソースコードなら"問題"になりませんよね?
また、VB6の場合コントロールや参照設定などコード領域に無い情報も必要となるため、
ソースコードを載せるだけでは全てはありません。
(もっとも、全ての情報を見せろといっているわけでも無いので、いいのですが)
何度も言いますが、問題点を絞ってください。

失礼しました。


ちょび  2007-03-07 16:45:36  No: 135646

ガッ様申し訳ありませんでした。
問題点を絞ると言う意味がようやくわかりました。

1、測定時刻等は、省いていただいて、ScaleBuf1,2,3,4を配列に取込み、その配    列を1つのファイルに保存が出来るかどうかを教えてください。
    その時のソースはどのように書けばよいでしょうか?
  
以上よろしくお願いいたします。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加