新しく発言する EXIT インデックスへ
仕様でしょうか。

  仕様でしょうか。 SECOND 2007/10/12 19:39:11 
  2)について 山中和義 2007/10/13 17:23:24 
  │└続き 山中和義 2007/10/13 17:24:23 
  │ └お手数かけます。オープンした後、通信デー... SECOND 2007/10/14 01:39:50 
  │  └!テストプログラム 山中和義 2007/10/14 13:20:06 
  │   └つづき 山中和義 2007/10/14 13:20:51 
  │    ├Read/Write共にうまくいきました。ありがと... SECOND 2007/10/14 15:23:08 
  │    └すみません、コントロールパネル、(COM1)の... SECOND 2007/10/14 15:35:59 
  │     └たぶんレジストリに登録されているのでしょ... 山中和義 2007/10/15 11:15:44 
  │      └白石先生に調製して頂いた、V702βは、極... SECOND 2007/10/15 15:59:58 
  1) 白石 和夫 2007/10/13 18:33:11 
  │├末尾にctrl−Zを置くファイルはどこで用いら... 白石 和夫 2007/10/13 18:58:33 
  ││├実は、MIFESと呼ばれる古いエディターを、 SECOND 2007/10/13 20:53:42 
  ││└大昔の仕様です。 河川屋 2007/10/16 21:55:35 
  ││ └だとすると,Ctrl-Zの直後が本当のEOFである... 白石 和夫 2007/10/17 14:59:34 
  ││  ├Ver.7.0.2の正式版では,CR,LFに続けてCtrl... 白石 和夫 2007/10/17 16:01:57  (修正1回)
  ││  └ファイル終りの概念は、物理レヘ゛ルと、論... SECOND 2007/10/18 00:21:39 
  │└CR(0Dh),LF(0Ah)の直後にCtrl-Z(1Ah)があっ... 白石 和夫 2007/10/14 18:29:29 
  │ └丁度、その状態です。実は、それが、プラグ... SECOND 2007/10/14 19:34:50 
  2) 白石 和夫 2007/10/13 18:41:29 
  │└コマンドプロンプト(DOSプロンプト)のMOD... 山中和義 2007/10/14 11:00:31 
  │ └Win32APIBuildCommDCBを使えば簡単にできそ... 白石 和夫 2007/10/14 15:00:42 
  │  └通信パラメータを書く場合は,COMポート名に... 白石 和夫 2007/10/14 15:58:02 
  │   └RS-232C機器を持っていないのでテストできま... 白石 和夫 2007/10/14 20:17:04 
  │    └!確認しました。コントロールパネルより、優... SECOND 2007/10/14 23:45:23 
  2) 白石 和夫 2007/10/14 09:28:18 
   └!直接execute文では動作しないようなので、... 山中和義 2007/10/14 10:50:11 

  仕様でしょうか。 SECOND 2007/10/12 19:39:11  ツリーへ

仕様でしょうか。 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/12 19:39:11

1)End_Of_File コード、ctl-Z(1AH) が末尾にあると、IF MISSING THEN・・が無効で、
  ExType:8011 の例外で止まります、仕様でしょうか。

2)COM1ポートの初期設定を、コントロール・パネルでなく、プラグラム上で、
  行なえる方法を、教えて下さい。

3)Win32API.hlp の DownLoad 先を、ご存知でしたら御願いします。

  2)について 山中和義 2007/10/13 17:23:24  ツリーへ

Re: 仕様でしょうか。 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/13 17:23:24
2)について

!MSDN
!http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpfileio/html/_win32_setcommstate.asp

!XPの場合、コマンドプロンプトでのMODEコマンドと同期する


OPTION CHARACTER BYTE

DECLARE EXTERNAL FUNCTION CloseHandle
DECLARE EXTERNAL FUNCTION CreateFile

DECLARE EXTERNAL FUNCTION BuildCommDCB
DECLARE EXTERNAL FUNCTION GetCommState
DECLARE EXTERNAL FUNCTION SetCommState

LET CONST_GENERIC_READ=BVAL("80000000",16)
LET CONST_GENERIC_WRITE=BVAL("40000000",16)
LET CONST_OPEN_EXISTING=3

!Type DCB
! DCBlength As Long
! BaudRate As Long 110,150,300,600,1200,2400,4800,9600,14400,19200,38400
! fBitFields As Long 'See Comments in Win32API.Txt
! wReserved As Integer
! XonLim As Integer
! XoffLim As Integer
! ByteSize As Byte 7,8
! Parity As Byte 0:なし,1:奇数,2:偶数,3:常にマーク
! StopBits As Byte 0:1bit,1:1.5bit,2:2bit
! XonChar As Byte
! XoffChar As Byte
! ErrorChar As Byte
! EofChar As Byte
! EvtChar As Byte
! wReserved1 As Integer 'Reserved; Do Not Use
!End Type


LET hComm=CreateFile("COM1",CONST_GENERIC_READ+CONST_GENERIC_WRITE,0,0,CONST_OPEN_EXISTING,0,0)
PRINT hComm

IF hComm<0 THEN
PRINT "オープンできません。"
ELSE
LET DCB$=REPEAT$("#",3*4+4*2+8*1)
LET DCB$(1:2)=DWORD$(LEN(DCB$)) !サイズを設定する


LET rc=GetCommState(hComm, DCB$) !既存の状態を得る
PRINT rc
LET rc=BuildCommDCB("9600,n,8,1", DCB$) !通信速度などの変更
PRINT rc
LET rc=SetCommState(hComm, DCB$) !設定する
PRINT rc


LET rc=GetCommState(hComm, DCB$) !確認
PRINT rc
PRINT "通信速度:";int32(DCB$,4)
PRINT "データビット:";ORD(mid$(DCB$,3*4+3*2+1,1))
PRINT "パリティ:";ORD(mid$(DCB$,3*4+3*2+2,1))
PRINT "ストップビット:";ORD(mid$(DCB$,3*4+3*2+3,1))
!!!PRINT "データビット:";MOD(int16(DCB$,3*4+3*2),256)
!!!PRINT "パリティ:";INT(int16(DCB$,3*4+3*2)/256)


LET rc=CloseHandle(hComm) !閉じる
PRINT rc
END IF

END


!Win32 API
EXTERNAL FUNCTION BuildCommDCB(lpDef$, lpDCB$)
ASSIGN "kernel32.dll","BuildCommDCBA"
END FUNCTION

EXTERNAL FUNCTION GetCommState(nCid, lpDCB$)
ASSIGN "kernel32.dll","GetCommState"
END FUNCTION

EXTERNAL FUNCTION SetCommState(hCommDev, lpDCB$)
ASSIGN "kernel32.dll","SetCommState"
END FUNCTION

EXTERNAL FUNCTION CloseHandle(hObject)
ASSIGN "kernel32.dll","CloseHandle"
END FUNCTION

EXTERNAL FUNCTION CreateFile(lpFileName$, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
ASSIGN "kernel32.dll","CreateFileA"
END FUNCTION

  │└続き 山中和義 2007/10/13 17:24:23  ツリーへ

Re: 2)について 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/13 17:24:23
続き



!補助ルーチン
EXTERNAL FUNCTION WORD$(n)
OPTION CHARACTER byte
LET r=MOD(n,2^8)
LET s$=CHR$(r)
LET n=(n-r)/2^8
LET r=MOD(n,2^8)
LET WORD$=s$ & CHR$(r)
END FUNCTION

EXTERNAL FUNCTION DWORD$(n)
OPTION CHARACTER byte
LET r=MOD(n,2^8)
LET s$=CHR$(r)
LET n=(n-r)/2^8
LET r=MOD(n,2^8)
LET s$=s$ & CHR$(r)
LET n=(n-r)/2^8
LET r=MOD(n,2^8)
LET s$=s$ & CHR$(r)
LET n=(n-r)/2^8
LET r=MOD(n,2^8)
LET DWORD$=s$ & CHR$(r)
END FUNCTION

EXTERNAL FUNCTION int16(s$,p)
OPTION CHARACTER byte
LET n=0
FOR i=1 TO 2
LET n=n+256^(i-1)*ORD(s$(p+i:p+i))
NEXT i
IF n<2^15 THEN LET int16=n ELSE LET int16=n-2^16
END FUNCTION

EXTERNAL FUNCTION int32(s$,p)
OPTION CHARACTER byte
LET n=0
FOR i=1 TO 4
LET n=n+256^(i-1)*ORD(s$(p+i:p+i))
NEXT i
IF n<2^31 THEN LET int32=n ELSE LET int32=n-2^32
END FUNCTION

  │ └お手数かけます。オープンした後、通信デー... SECOND 2007/10/14 01:39:50  ツリーへ

Re: 続き 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/14 01:39:50
お手数かけます。オープンした後、通信データ−の READ/WRITE は、どうするのですか。

ファイルハンドル、hComm で、ReadFile()、WriteFile() を追加してみたのですが、
うまくいきません。

コントロール・パネルの
(COM1)のプロパティ、ポートの設定、は、何かの DCB の部分のようで、
実際には、オープンされておらず、この上にプログラムで、上書きできれば、
いいのですが、、

  │  └!テストプログラム 山中和義 2007/10/14 13:20:06  ツリーへ

Re: お手数かけます。オープンした後、通信デー... 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/14 13:20:06
!テストプログラム

OPTION CHARACTER BYTE

DECLARE EXTERNAL FUNCTION CloseHandle
DECLARE EXTERNAL FUNCTION CreateFile
DECLARE EXTERNAL FUNCTION ReadFile
DECLARE EXTERNAL FUNCTION WriteFile

DECLARE EXTERNAL FUNCTION BuildCommDCB
DECLARE EXTERNAL FUNCTION GetCommState
DECLARE EXTERNAL FUNCTION GetCommTimeouts
DECLARE EXTERNAL FUNCTION SetCommState
DECLARE EXTERNAL FUNCTION SetCommTimeouts

LET CONST_GENERIC_READ=BVAL("80000000",16)
LET CONST_GENERIC_WRITE=BVAL("40000000",16)
LET CONST_OPEN_EXISTING=3

!Type DCB
! DCBlength As Long
! BaudRate As Long 110,150,300,600,1200,2400,4800,9600,14400,19200,38400
! fBitFields As Long 'See Comments in Win32API.Txt
! wReserved As Integer
! XonLim As Integer
! XoffLim As Integer
! ByteSize As Byte 7,8
! Parity As Byte 0:なし,1:奇数,2:偶数,3:常にマーク
! StopBits As Byte 0:1bit,1:1.5bit,2:2bit
! XonChar As Byte
! XoffChar As Byte
! ErrorChar As Byte
! EofChar As Byte
! EvtChar As Byte
! wReserved1 As Integer 'Reserved; Do Not Use
!End Type

!Type COMMTIMEOUTS
! ReadIntervalTimeout As Long
! ReadTotalTimeoutMultiplier As Long
! ReadTotalTimeoutConstant As Long
! WriteTotalTimeoutMultiplier As Long
! WriteTotalTimeoutConstant As Long
!End Type



LET hComm=CreateFile("COM1",CONST_GENERIC_READ+CONST_GENERIC_WRITE,0,0,CONST_OPEN_EXISTING,0,0) !ハンドルを得る
PRINT hComm

IF hComm<0 THEN
PRINT "オープンできません。"
ELSE
LET DCB$=REPEAT$("#",3*4+4*2+8*1)
LET DCB$(1:2)=DWORD$(LEN(DCB$)) !サイズを設定する


LET rc=GetCommState(hComm, DCB$) !既存の状態を得る
PRINT rc
LET rc=BuildCommDCB("9600,n,8,1,p", DCB$) !通信速度などの変更
PRINT rc
LET rc=SetCommState(hComm, DCB$) !設定する
PRINT rc

LET rc=GetCommState(hComm, DCB$) !確認
PRINT rc
PRINT "通信速度:";int32(DCB$,4)
PRINT "データビット:";ORD(mid$(DCB$,3*4+3*2+1,1))
PRINT "パリティ:";ORD(mid$(DCB$,3*4+3*2+2,1))
PRINT "ストップビット:";ORD(mid$(DCB$,3*4+3*2+3,1))


LET COMMTIMEOUTS$=REPEAT$("#",5*4) !タイムアウトの設定する
LET COMMTIMEOUTS$(1:4)=DWORD$(500)
LET COMMTIMEOUTS$(5:8)=DWORD$(0)
LET COMMTIMEOUTS$(9:12)=DWORD$(500)
LET COMMTIMEOUTS$(13:16)=DWORD$(0)
LET COMMTIMEOUTS$(17:20)=DWORD$(500)
LET rc=SetCommTimeouts(hComm, COMMTIMEOUTS$)
PRINT rc

LET rc=GetCommTimeouts(hComm, COMMTIMEOUTS$) !確認
PRINT rc
PRINT "読み込みの待ち時間:";int32(COMMTIMEOUTS$,0)
PRINT "読み込みの1文字あたり時間:";int32(COMMTIMEOUTS$,4)
PRINT "読み込みの定数時間:";int32(COMMTIMEOUTS$,8)
PRINT "書き込みの1文字あたりの時間:";int32(COMMTIMEOUTS$,12)
PRINT "書き込みの定数時間:";int32(COMMTIMEOUTS$,16)

  │   └つづき 山中和義 2007/10/14 13:20:51  ツリーへ

Re: !テストプログラム 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/14 13:20:51
つづき


LET wData$="ABC12345"&CHR$(13) !データ送信する
LET wLen$=REPEAT$("#",4)
LET rc=WriteFile(hComm, wData$, LEN(wData$), wLen$, 0)
PRINT rc,int32(wLen$,0) !結果と実際に送信した文字数


LET rc=CloseHandle(hComm) !閉じる
PRINT rc
END IF

END


!Win32 API シリアル伝送用(RS-232C)
EXTERNAL FUNCTION BuildCommDCB(lpDef$, lpDCB$)
ASSIGN "kernel32.dll","BuildCommDCBA"
END FUNCTION

EXTERNAL FUNCTION GetCommState(nCid, lpDCB$)
ASSIGN "kernel32.dll","GetCommState"
END FUNCTION

EXTERNAL FUNCTION GetCommTimeouts(hFile, lpCommTimeouts$)
ASSIGN "kernel32.dll","GetCommTimeouts"
END FUNCTION

EXTERNAL FUNCTION SetCommState(hCommDev, lpDCB$)
ASSIGN "kernel32.dll","SetCommState"
END FUNCTION

EXTERNAL FUNCTION SetCommTimeouts(hFile, lpCommTimeouts$)
ASSIGN "kernel32.dll","SetCommTimeouts"
END FUNCTION


!Win32 API ファイルI/O
EXTERNAL FUNCTION CloseHandle(hObject)
ASSIGN "kernel32.dll","CloseHandle"
END FUNCTION

EXTERNAL FUNCTION CreateFile(lpFileName$, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
ASSIGN "kernel32.dll","CreateFileA"
END FUNCTION

EXTERNAL FUNCTION ReadFile(hFile, lpBuffer$, nNumberOfBytesToRead, lpNumberOfBytesRead$, lpOverlapped)
ASSIGN "kernel32.dll","ReadFile"
END FUNCTION

EXTERNAL FUNCTION WriteFile(hFile, lpBuffer$, nNumberOfBytesToWrite, lpNumberOfBytesWritten$, lpOverlapped)
ASSIGN "kernel32.dll","WriteFile"
END FUNCTION


!補助ルーチン

省略

  │    ├Read/Write共にうまくいきました。ありがと... SECOND 2007/10/14 15:23:08  ツリーへ

Re: つづき 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/14 15:23:08
Read/Write 共にうまくいきました。ありがとうございます。

  │    └すみません、コントロールパネル、(COM1)の... SECOND 2007/10/14 15:35:59  ツリーへ

Re: つづき 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/14 15:35:59
すみません、コントロールパネル、(COM1)のプロパティ、ポートの設定の上書き
方法も、御願いできますか、、

  │     └たぶんレジストリに登録されているのでしょ... 山中和義 2007/10/15 11:15:44  ツリーへ

Re: すみません、コントロールパネル、(COM1)の... 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/15 11:15:44
たぶんレジストリに登録されているのでしょう。(調査要)

また、他のプログラムでCOMxを更新しても反映されませんので、
コントロールパネルで「設定する内容」や「以前設定した内容」が表示されるようです。

そうすると、(両方含めて)実現はむずかしいと思います。

  │      └白石先生に調製して頂いた、V702βは、極... SECOND 2007/10/15 15:59:58  ツリーへ

Re: たぶんレジストリに登録されているのでしょ... 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/15 15:59:58
白石先生に調製して頂いた、V702βは、極めて、快適です。
(ヘルプへの記載が、まだ無い)ぐらいが、現状の気付きでしょうか。
自分の手持ちの分、全てを、このバージョンで、作業し、走らせるように
しました。 多分、良い報告が出せると、思います。

こんな、大きな、ツリーになるとは、夢にも思いませんでした。いろいろ
ありがとうございました。

  1) 白石 和夫 2007/10/13 18:33:11  ツリーへ

Re: 仕様でしょうか。 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/13 18:33:11
1)
通常ファイルを表示形式として開いたときには,末尾のctrl−Zを無視するようにしたはずだったのですが,そうなってないようなので,(可能であれば)修正します。

  │├末尾にctrl−Zを置くファイルはどこで用いら... 白石 和夫 2007/10/13 18:58:33  ツリーへ

Re: 1) 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/13 18:58:33
末尾にctrl−Zを置くファイルはどこで用いられているのしょうか?
あるいは,あるOSでの習慣なのでしょうか。

  ││├実は、MIFESと呼ばれる古いエディターを、 SECOND 2007/10/13 20:53:42  ツリーへ

Re: 末尾にctrl−Zを置くファイルはどこで用いら... 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/13 20:53:42
実は、MIFES と呼ばれる 古いエディターを、
MS-DOS版ですが、まだ、私は使用しています。
この時代のエディターは、殆んどが、EOF を付加します。

このエディターは、10MB を越えるテキストでも、重くならず、chr$(0)〜の文字も、検索 置換に使えたり、
反転のワイルドカードや、グループ文字など、あいまいな文字列も
検索 置換できる等の理由で、捨てがたく、持ち越しています。

  ││└大昔の仕様です。 河川屋 2007/10/16 21:55:35  ツリーへ

Re: 末尾にctrl−Zを置くファイルはどこで用いら... 返事を書く ノートメニュー
河川屋 <evcdumfptp> 2007/10/16 21:55:35
大昔の仕様です。

EOFコードをテキストファイルの末尾に置くのは、CP/Mの時代からの仕様です。
CP/Mのファイル管理はセクタ(128byte)単位であり、byte単位のサイズまでわからなかったため、
EOFコードを末尾に置くしかファイル終わりを知る方法がありませんでした。
おそらくは、DOSシステムコールのCP/M互換仕様として今でも残っているものと思われます。
※当時のBASICコンパイラ(マイクロソフト製、DOS汎用のもの)を引っ張り出して確認しましたが、
 WIN(XP)でもDOS窓で無事動くし、ファイルサイズは128byte刻みで増えています。

  ││ └だとすると,Ctrl-Zの直後が本当のEOFである... 白石 和夫 2007/10/17 14:59:34  ツリーへ

Re: 大昔の仕様です。 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/17 14:59:34
だとすると,Ctrl-Zの直後が本当のEOFであることをチェックしてはいけないということになりますか。

  ││  ├Ver.7.0.2の正式版では,CR,LFに続けてCtrl... 白石 和夫 2007/10/17 16:01:57  (修正1回) ツリーへ

Re: だとすると,Ctrl-Zの直後が本当のEOFである... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/17 16:01:57 ** この記事は1回修正されてます
Ver. 7.0.2の正式版では,CR,LFに続けてCtrl-Z(1Ah)を見つけたら,それ以降すべてを読み飛ばすことにします。(通常ファイルを表示形式で開いた場合に限る)

次のページからダウンロードできます。
http://hp.vector.co.jp/authors/VA008683/basicw32.htm

  ││  └ファイル終りの概念は、物理レヘ゛ルと、論... SECOND 2007/10/18 00:21:39  ツリーへ

Re: だとすると,Ctrl-Zの直後が本当のEOFである... 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/18 00:21:39
ファイル終りの概念は、物理レヘ゛ルと、論理レヘ゛ル の2つに分けて考えるべきでは
ないでしょうか、

ctl-Z は、ユーザーが、意識的に、打込むわけでは、なく、

エディターが、勝手に付け加えるもので、
編集画面に表示されない場合も あり、編集不可能な文字として位置付けられています。
( MIFES でも、ctl-Z をつけない SAVE file を指示する事ができません。)

あくまで、システムが、自身のために付ける、コントロールで、
ユーザーにとっては、その1バイト手前の文字が、ファイルの終りの文字です。

数理的な、ファイル終りは、ctl-Z(1AH) を含まない最後。
物理的な、ファイル終りは、バイナリーとしての最後。で、いかがでしょう。


遅れましたが、V702β は、互換性を含めて、何の不具合いも発見出来ませんでした。
ほんとうに、ありがとうございました。

  │└CR(0Dh),LF(0Ah)の直後にCtrl-Z(1Ah)があっ... 白石 和夫 2007/10/14 18:29:29  ツリーへ

Re: 1) 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/14 18:29:29
CR(0Dh),LF(0Ah)の直後にCtrl-Z(1Ah)があって,それが本当にファイルの末尾であればCtrl-Zを無視することにします。(通常ファイルを表示形式として開いた場合に限る)

  │ └丁度、その状態です。実は、それが、プラグ... SECOND 2007/10/14 19:34:50  ツリーへ

Re: CR(0Dh),LF(0Ah)の直後にCtrl-Z(1Ah)があっ... 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/14 19:34:50
丁度、その状態です。実は、それが、プラグラム・ソースの場合も、
実行してくれない不都合がありまして、

最後尾に注釈マーク「!」を置き、改行しないで、Eof
にするようにして、対処しています。

  2) 白石 和夫 2007/10/13 18:41:29  ツリーへ

Re: 仕様でしょうか。 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/13 18:41:29
2)
Full BASICの言語仕様の範囲ではできないので,コントロールパネルの設定を引き継ぐことにしています。
プログラムで設定できるようにしたければ,文法を拡張する必要が生じます。技術的には難しくない(内部では実行している)ことなので,文法が確定すれば実現可能なことではあると思います。

  │└コマンドプロンプト(DOSプロンプト)のMOD... 山中和義 2007/10/14 11:00:31  ツリーへ

Re: 2) 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/14 11:00:31
コマンドプロンプト(DOSプロンプト)のMODEコマンドと同じ文法がいいかと思います。

OPEN #1: NAME "COM1:9600,N,8,1"

※QuickBasicなどマイクロソフト系BASICと同様

  │ └Win32APIBuildCommDCBを使えば簡単にできそ... 白石 和夫 2007/10/14 15:00:42  ツリーへ

Re: コマンドプロンプト(DOSプロンプト)のMOD... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/14 15:00:42
Win32 API BuildCommDCB を使えば簡単にできそうなので,その線でいきます。

  │  └通信パラメータを書く場合は,COMポート名に... 白石 和夫 2007/10/14 15:58:02  ツリーへ

Re: Win32APIBuildCommDCBを使えば簡単にできそ... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/14 15:58:02
通信パラメータを書く場合は,COMポート名に続けて必ずコロンを書き,modeコマンドと同様の書式で通信パラメータを書くことにします。

OPEN #1:NAME "COM1: baud=9600 parity=N data=8 stop=1"
あるいは,
OPEN #1:NAME "COM1:96,n,8,1"

  │   └RS-232C機器を持っていないのでテストできま... 白石 和夫 2007/10/14 20:17:04  ツリーへ

Re: 通信パラメータを書く場合は,COMポート名に... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/14 20:17:04
RS-232C機器を持っていないのでテストできません。
β版を
http://www.geocities.jp/thinking_math_education/downloads.html
におきます。
BASIC702.zipをダウンロードしてください。

  │    └!確認しました。コントロールパネルより、優... SECOND 2007/10/14 23:45:23  ツリーへ

Re: RS-232C機器を持っていないのでテストできま... 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/10/14 23:45:23
!確認しました。コントロールパネルより、優先されて
!下のテストプログラムが、正常実行されました。

!他の面は、まだ確かめておりませんが、もしあれば、必ずご報告します。
!ありがとうございました。


OPEN #1: NAME "COM1:1200,e,8,1"
DO
LINE INPUT #1:w$
PRINT w$
CHARACTER INPUT nowait: k$
LOOP UNTIL k$<>""

CLOSE #1

END

!コントロールパネル 既定値
!  ビット/秒(B) 9600
! データビット(D) 8
!   パリティ(P) なし
!ストップビット(S) 1
!  フロー制御(F) Xon/Xoff

  2) 白石 和夫 2007/10/14 09:28:18  ツリーへ

Re: 仕様でしょうか。 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/10/14 09:28:18
2)
Windowsのmodeコマンドでシリアルポートの設定ができます。
modeコマンドの実体はおそらくWindowsのsystem32フォルダにあるmode.comだと思うので,
EXECUTE "mode.com" WITH "COM1: baud=9600 parity=n data=8"
のような感じでBASICから実行することもできるのではないでしょうか。
modeコマンドのヘルプは,Windowsのヘルプにあります。(スタートメニューに出るヘルプ)

   └!直接execute文では動作しないようなので、... 山中和義 2007/10/14 10:50:11  ツリーへ

Re: 2) 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/14 10:50:11
!直接execute文では動作しないようなので、、、

!動作不良となる。

execute "mode.com" WITH ("com2:9600,o,7,1,p")



!バッチファイルを作成して、それを実行する

OPEN #2: NAME "test.cmd" !作業用バッチファイルを作成する
ERASE #2 !新規に
PRINT #2:"mode com2:4800,n,8,1,p"
PRINT #2:"pause" !エラーを確認する ※XPの場合
CLOSE #2

execute "test.cmd" !※XPの場合。98/Meは拡張子はbat

END


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。