三菱のシーケンサ(FXonシリーズ)との通信プログラムを作ってます。
以前、マイコンとのシリアル通信を行ったとき気づかなかったのですが,今回データ長が8ビットの場合と7ビットの場合に設定できることがわかりました。
”8ビット[1ビットがon]”
”7ビット[0ビットがoff]”
としかマニュアルにば載っていません。
意味わかりません。
結局、通信のことが理解できていないようです。
どなたか、「バカ」にわからせていただけませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

シーケンサのことは全く素人なんですが、ご参考になれば


と思い、記します。おしゃっていることは
通信に使うコード体系で、
7ビットコード体系と8ビットコード体系のことと推定します。
その件の2体系が出来た説明が下記に有ります。
このWEBページは長い文章の途中の一部なので、編集
-検索-「7ビットコード体系」で検索して見てください。
http://www.secret-dan.com/members/quiosi/
back19990415.html
WEBを「通信コード体系and7ビットコード」で検索すると、
プログラマブルコントローラの広告に「28種類のコード
体系に対応」と載っているものが出てくるところから
通信コード体系のことと察します。昔のテレタイプのコードなどは7ビット(7列の穴と別にガイドの1列の穴が紙
テープにあいていました。その後8ビットコード体系が
主流になった。
    • good
    • 0
この回答へのお礼

早速、検索してみます。
シーケンサは昔から使ってはいたのですが,通信となるとビギナーのビギナーですので・・・。
どうもありがとうございました。

お礼日時:2001/10/29 12:51

1キャラクタのデータ-長を設定します。


(1キャラクタを何ビットで表すか)
通常1キャラクタ=8ビット=1バイトですが、シリアル通信を使うときにASC表の全てを必要としない。上位4BIT+下位の必要な部分だけで転送BIT数を稼いでいたのだと思います。
昔は300bpsなんて当たり前でしたし、転送bit数が多くなると昔のスキャンタイムが遅いシーケンサでは通信処理が重くて制御が遅くなっていました。
その名残だと私は考えています。

余談ですがFXのシリアルポートはちょっと遅いです、バッファーの取り方も上手くなかったと思います(過去1度だけ通信しましたが遅かった記憶があります)。

したがってFXの設定にあわせればいいです。
確かFXは初期値8ビットだったと思います。

シリアル設定の基本はボーレート(これは解りますね)・キャラクタビット長(8・7・6・5)・ストップビット(無効・1・1.5・2)・パリティチェック(なし・奇数・偶数)・フロー制御(ハード・ソフト「XON/off」)をお互いに同じにすればいいです。

FXのフロー制御はソフト「Xon・off」に固定されていたような??・・三菱はあまり使わない為マニュアルを読んでないので記憶の範疇です悪しからず。
    • good
    • 0
この回答へのお礼

キャラクタビットの意味がよくわかりました。
どうもありがとうございました。

お礼日時:2001/10/29 12:47

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログ

VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラムを考えています。

グローバルキーフックを使用しないで、実現する方法はありますでしょうか?
ご教示の程お願いいたします。

Aベストアンサー

>グローバルキーフック
これの引数っていろいろありますよね?

マウスとキーボードだけは.NETで捕らえることができます。
ただCTL+ALT+DELというショートカットは、これらの管理よりもっと深いところで行われているので、仮にCで作成してフックしても目的の制御の実現は出来ません。


>グローバルキーフックを使用しないで
となると、やはり#1さんの方法しかありません。


#1さんの参考URL中に
「SAS発生時の動作:」
というのがあります。そこに
「GINAのWlxLoggedOnSas()」
というところがあるのですが、その近辺を熟読してください。
そしてこれ
http://msdn.microsoft.com/en-us/library/aa380570(VS.85).aspx


#1さんが示した情報は「古い」のではなく、古くから存在する実現方法というだけです。
そして現在、新たな別方法が出現しているわけではありません。

.NETで作成するDLLとCで作成するDLLは当然異なりますので、質問の
「VB.NETで、[Ctrl]+[Alt]+[Del]を無効にするプログラム」
という質問には、「無理です」としか言いようがありません。

>グローバルキーフック
これの引数っていろいろありますよね?

マウスとキーボードだけは.NETで捕らえることができます。
ただCTL+ALT+DELというショートカットは、これらの管理よりもっと深いところで行われているので、仮にCで作成してフックしても目的の制御の実現は出来ません。


>グローバルキーフックを使用しないで
となると、やはり#1さんの方法しかありません。


#1さんの参考URL中に
「SAS発生時の動作:」
というのがあります。そこに
「GINAのWlxLoggedOnSas()」
というところがあるのですが、その...続きを読む

Q[ADO]と[ADO.NET]の違い

VB6とAD0が仲間で
VB.NETとADO.NETが仲間ですか?

よろしくお願いします。

Aベストアンサー

どんな回答を望んでいるのだろうか。
質問文に対する簡潔な回答をするならば 「そうです」 と回答しておきましょうか。
タイトルに対する回答なら 「ado ado.net 違い」 で検索すれば理解可能な回答を得られる。
http://www.google.co.jp/search?q=ado+ado.net+違い&ie=UTF-8&oe=UTF-8&hl=ja

Q[excel][マクロ]フォルダ内のマクロ有効のブックを通常のブックにするコード

以前フォルダ内の通常のブック(xlsx)をマクロ有効のブック(xlsm)にするマクロを組んだのですがそれを応用して今度は逆の作業をすることになり以前教えて頂いたマクロを有効にするコードを参考に以下を作りましたが動作しませんでした

やりたい作業は
フォルダ内のマクロ化されているブックを開く
通常のブックとして保存
閉じる
次のファイルを開いて同様の動作をフォルダ内のすべてのブックに適用
です

実行したところ
Set wb = Workbooks.Open(Fn)
のところが黄色く表示されてにエラーが出てしまいました、改善点を教えてください


Sub 非マクロ化テスト2()
Dim Fs, Fl, Fn, wb
Set Fs = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files
For Each Fl In Fs
Fn = ThisWorkbook.Path & "\" & Fl.Name
If Right(Fn, 5) = ".xlsm" Then
Set wb = Workbooks.Open(Fn)
Fn = Left(Fn, Len(Fn) - 5) & ".xlsx"
Application.DisplayAlerts = False
wb.SaveAs FileName:=Fn, FileFormat:=xlOpenXMLWorkbook
wb.Close
Application.DisplayAlerts = True
End If
Next
End Sub

以前フォルダ内の通常のブック(xlsx)をマクロ有効のブック(xlsm)にするマクロを組んだのですがそれを応用して今度は逆の作業をすることになり以前教えて頂いたマクロを有効にするコードを参考に以下を作りましたが動作しませんでした

やりたい作業は
フォルダ内のマクロ化されているブックを開く
通常のブックとして保存
閉じる
次のファイルを開いて同様の動作をフォルダ内のすべてのブックに適用
です

実行したところ
Set wb = Workbooks.Open(Fn)
のところが黄色く表示されてにエラーが出てしまい...続きを読む

Aベストアンサー

こんにちは。

私も、マクロ化のブックは作りましたが、逆は考えたことがありません。
(マクロ化は、VBEの中身を検索し、1行でも存在すれば、.xlsm にするということです。)

もしかしたら、
>CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files

Set wb = Workbooks.Open(Fn)
おそらくエラーの原因は、属性の問題あたりが原因かもしれません。それを、Normal ファイルであるか、調べる必要があるかと思います。

ちなみに、私も独自路線でかんがえてみました。
私は、以下のようにあらがじめ該当するブック名を取得し、配列変数の中に入れておくようにします。Dir は、途中で操作されるのを嫌います。

私のこだわりは、2点
変換後の同名ファイルの存在。
枝番付にします。
後は、パスワードの有無 (たぶん、バージョンによって反応の違いが出るかもしれません。こちらは、Excel 2013 です。)

'//

Sub DeMacroFileName()
 Dim myPath As String
 Dim myArray()
 Dim fName As String
 Dim i As Long
 Dim fn As Variant, nFn As String
 Dim cnt As Long
 Dim wb As Workbook
 ReDim myArray(1999)
 myPath = ThisWorkbook.Path & "\"
 On Error GoTo ErrHandler
 fName = Dir(myPath & "*.xlsm", vbNormal)
 Do While fName <> ""
  If (GetAttr(myPath & fName) And vbNormal) = vbNormal Then
   If fName <> ThisWorkbook.Name Then
    myArray(i) = fName
    i = i + 1
   End If
   DoEvents
   If i > 2000 Then Exit Do '2000ファイル以上は不可能
  End If
  fName = Dir
 Loop
 ReDim Preserve myArray(i - 1)
 
 Application.EnableEvents = False '開いた時にマクロが邪魔になる
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 For i = 0 To UBound(myArray)
  fn = myArray(i)
  Set wb = Workbooks.Open(Filename:=myPath & fn, Password:="")
  If Not wb Is Nothing Then
   nFn = RenamingF(fn, myPath)
   wb.SaveAs nFn, xlOpenXMLWorkbook
   wb.Close False
   DoEvents
   cnt = cnt + 1
  End If
  Set wb = Nothing
nextFn:
 Next i
 Application.DisplayAlerts = True
 Application.EnableEvents = True
 Application.ScreenUpdating = True
 MsgBox cnt & "/" & UBound(myArray) + 1 & "が成功しました。", vbInformation
 Exit Sub
ErrHandler:
 MsgBox "ファイル名 : " & fn & vbCrLf & _
 Err.Number & ": " & Err.Description
 
 Debug.Print fn '失敗した時に記録を取る
 If Err.Number = 92 Then  '滅多に発生しません。
  MsgBox "中途で終了します。", vbExclamation
  Exit Sub
 Else
  Resume Next
 End If
End Sub
Private Function RenamingF(ByVal fName As String, mPath As String)
'同名ファイルの枝番付け
Dim SaveName As String
Dim j As Long
If Right(mPath, 1) <> "\" Then mPath = mPath & "\"
SaveName = mPath & Mid(fName, 1, InStrRev(fName, ".") - 1)
 Do While Dir(SaveName & ".xlsx") <> ""
  If InStrRev(SaveName, "_") > 0 Then
   SaveName = Mid$(SaveName, 1, InStrRev(SaveName, "_") - 1)
  End If
   j = j + 1
   SaveName = SaveName & "_" & CStr(j)
  Loop
RenamingF = SaveName
End Function

こんにちは。

私も、マクロ化のブックは作りましたが、逆は考えたことがありません。
(マクロ化は、VBEの中身を検索し、1行でも存在すれば、.xlsm にするということです。)

もしかしたら、
>CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files

Set wb = Workbooks.Open(Fn)
おそらくエラーの原因は、属性の問題あたりが原因かもしれません。それを、Normal ファイルであるか、調べる必要があるかと思います。

ちなみに、私も独自路線でかんがえてみました。
私は、以下のように...続きを読む

Qvbで[ctrl]+[tab]を認識させるにはどうしたらよいでしょうか?

はじめまして、どうしてもうまくいきません。教えてくださいませ。

[ctrl]+[tab]キー入力を認識させるにはどうしたら良いでしょうか?

現在、VBでMDIフォームを使用してプログラムを作っております。
[ctrl]+[tab]キー入力を行なうと、子フォーム間でフォームの移動が起こってしまいます。CommandButton押下時にのみ、フォームの移動を行なうようにしたいので、
[ctrl]+[tab]キー入力を制御して実現させようとしているのですが、うまくいきません。

MSDNライブラリには、KeyUpとKeyDownのイベントで
Tabキーの操作は発生しないと書いてありました。。。
何か方法がありましたらお教えいただけると助かります。
どうぞよろしくお願いします。

Aベストアンサー

SetWindowsHookExでキーボードフックかけなきゃだめでしょうね。
ローカルフックでOKなのかグローバルフックが必要かはわかりませんが。

QVB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

VB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

Aベストアンサー

&amp;="&"
&amp;="""
=Right([nendo],2) &amp; &quot;/06&quot  -> =Right([nendo],2) & "/06"
[nendo]はアクセスのフィールド名か(アクセスのVBA?)。[]で囲むから。
中身は、#2でご指摘の年度で2007とかは行っているのでしょう。
Right関数は文字列の右側、最後から文字数を指定して切り出す。
&は文字列を結合する演算子。
/06をこの順序で結合するもの。


このカテゴリの人気Q&Aランキング

おすすめ情報