Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: mocona@ss.iij4u.or.jp (UEYAMA Satoshi) Newsgroups: playstation.ny.program.labo Subject: Re: =?ISO-2022-JP?B?GyRCREw/LiRLJEQkJCRGGyhC?= Date: 11 Feb 1998 03:22:27 GMT Organization: IIJ4u user Lines: 48 Message-ID: <6br5hj$9m2@news1.scei.co.jp> References: <34D31E69.2769@syshp.tm.chiba-u.ac.jp> NNTP-Posting-Host: 210.130.72.8 X-Newsreader: mocona 1.0-alpha1.5 ども、植山です。 > 私は今,PCとPSで通信を行うプログラムを作っているのですが, > そのプログラムで9バイト以上のデータをPCからPSに送ると, > PSが通信を行わなくなるという問題に悩んでいます. 実は私も siocons fow Windows95 にファイルリードライト機能を付けて いて似たような症状にあっています。で、いろいろやった結果、対症療法 ですが以下の方法で一応の転送はできました。非常にに不安定で、リトラ イが時々出ますが… # 環境によっては動かない可能性あり、ということ。 また、ただでさえ遅いと文句を言われているシリアルポート接続なのに、 さらに性能が落ちます。 ○ PC 側 ・1バイトずつ WriteFile() する。 ・WriteFile() 前に ClearCommError() で COMSTAT を取得し、送信バッ ファが0バイトであることを確認する。 ○ PlayStation 側 ・1バイトずつリードする。 ・read() 直前に RTS をオン、read() 直後に RTS をオフにする。 ioctl(fd, TIOCRTS, 1); read(fd, ......); ioctl(fd, TIOCRTS, 0); 対 CIP での転送時にはこんな操作はいらないことから PS 側をうまいこ と作ればいいのは確かだと思うのですが、いかんせん ioctl() がサポー トされたのにデバイスの制御方法が公開されていないという方手落ち状態 なので、現状ではこれ以上の対処方法を試すことさえできない状態です。 # 受信バッファに溜まっているバイト数分だけリードするとか… ## このあたりの ioctl() の使い方知りませんか?>どなたか あと今回の件とは関係ないですが、 > 設定は (siocons for Windows95を参照しました.) > dcb.fNull = TRUE; これは siocons for Windows95 のバグで、このメンバを FALSE にしてお かないと受信(PS→PC)データに含まれる 0x00 のデータが無視されてしま います。 -- 植山 悟司%謎の生物愛好家 http://www1.scei.co.jp/~ekb01823/