NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

PICのRS232C通信のパリティを変更する方法を教えてください。

差出人: なおさん <wachi_cat2000…>
送信日時 2013/09/13 11:21
ML.NO [picfun:7369]
本文:

PICのRS232C通信のパリティを変更する方法を教えてください。

PIC16F1938をCCS(Ver5.011)でコンパイルをして使用しています。
ポートのほとんどがSWやLEDの入出力に使っていてRS232CのTXとRXに2Pinを使用しています。
ターゲットと通信を多種の機種とできるようにボーレートやパリティーやコマンドを変更できるよう、
4BIT入力のロータリーディップスイッチで16通りの設定を変更しようとしています。

基本はディップスイッチは運用中(RUN中)に変更可能でスタートSW入力後設定適用とします。

この場合、set_uart_speed (baud, [stream, clock])
で通信のボーレートは変更できますが、

パリティーをNoneからEvenやOddのほうに変更できる関数が無く、
ハードウェアでもレジストの変更が記載されておらず(ソフトウェアーで処理するとかかれてました)
困っています。

■ヘッダーファイルで下記

#use rs232( baud=9600, parity=N , xmit=PIN_C6, rcv=PIN_C7 , stream=COM_A ) // NoneParity
#use rs232( baud=9600, parity=E , xmit=PIN_C6, rcv=PIN_C7 , stream=COM_B ) // EvenParity
#use rs232( baud=9600, parity=O , xmit=PIN_C6, rcv=PIN_C7 , stream=COM_C ) // OddParity

■送信部分
void send(void) // コマンド送信
{
byte i;

for( i = 0 ; i <= 32 ; i++ ){
recData[i] = ;
}

for( i = 0 ; i <= chrNo ; i++ ){
//putc( sendData[i] );
if(ParityFlag == NoneParity){fputc( sendData[i] , COM_A);}
if(ParityFlag == EvenParity){fputc( sendData[i] , COM_B);}
if(ParityFlag == OddParity) {fputc( sendData[i] , COM_C);}
}
}

上記で、ParityFlag = EvenParityで設定のとき
NoneParityで常に送信をしてしまいます。



運用中にパリティ変更できるような対策などありましたら、
ご教授のほどをよろしくお願いします。

初めての投稿で乱筆・乱文をしてしまいましたら、申し訳ございません。

Gg[ubN}[N
添付:

このメールには下記のメールが返信されています:

更新順メールリスト