タイトル : Re^3: MSCommの動作実態と多重On Error文に関して教えて下さい。 投稿日 : 2008/03/19(Wed) 09:01 投稿者 : BamChan
> > Item(i)に適切ではない文字列が入っている可能性を調べてみるとか。 > > # Printステートメントで取り扱うことのできない文字、という意味です。 > > <問題の部分の調査用変更> > Private OrgVal(256) As String > : > OrgVal(CrntNo) = "" '逐次、全項目をHex文字列にして退避しておく > For i = TblFact(CrntNo).Size - 1 To 0 Step -1 > If ch(i) = 0 Then > OrgVal(CrntNo) = OrgVal(CrntNo) & "00" > ElseIf ch(i) < 16 Then > OrgVal(CrntNo) = OrgVal(CrntNo) & "0" & Hex(ch(i)) > Else > OrgVal(CrntNo) = OrgVal(CrntNo) & Hex(ch(i)) > End If > Next i > OrgVal(CrntNo) = OrgVal(CrntNo) & "Z" '"Z" をマークにしておく > : > Item(CrntNo) に対し、本来の編集を行う。 '(この中に問題の部分がありそう?) > : > Private Sub Timer1_Timer() > Dim i As Integer > Rec = Date & "," & Time & "," > Print #1, Rec; > FOr i = 0 To Limit > On Error GoTo ERR > Print #1, Item(i); > On Error GoTo 0 > Print#1, ","; > Next i > Print #1, "" ' CR/LF を出力して、csvファイル1レコードとする > Exit Sub > ERR: > Print #1, OrgVal(i); ' 本来の文字列の代わりに、Hex文字列を出力する。 > Resume Next > End Sub > > これで、出力された.csv ファイルで、"Z"を検索すれば、どのItemにどの様な値が入力され > どの様な文字編集を行った際に、Printできなくなるか、が特定されると思います。 > これで、結論に近づけると思います。 > > 色々、寄り道の多いやりとりになりましたが、私にとって意味深い寄り道でした。 > 本当に有難う御座いました。 っと、事実上の収束宣言を出してしまいましたが、今度は上の例外事象が発生しなくなって しまいました。ランニング時間は、上記の対処前の概ね発生間隔の倍時間を越えています。 更に、この部分以外のソースやハードも含めた環境は、一切変えていないつもりです。 (「見ようとすると現象が変わる」のは、組み込みではよく出会う事項ではありますが‥。) 単に捉えると、「変更前ソースNo.11781の Rec = Rec & Item(i) の1行が怪しい」、となるわけですが、まさか‥‥です。 確かに、RS232Cで繋いでいる相手から受信しているデータまでは「同じ」とは言い切れませんが、 そういう傾向の現象でも無さそうに思われます。 |