まあ、紆余曲折を書いてきましたが、結局RS485の通信がどうなったかと言うと、便利に使えています。
参考までに、プログラム(一部)を掲載します。
ただ、訳も分からずに使われるのは本意ではありませんので、解説などは付けません。流用する場合は、理解してから使ってください。
NXT側(NXC)
byte RcvByte( )
{
byte ibuf[16];
until(RS485DataAvailable( ));
RS485Read( ibuf );
return( ibuf[0] );
}
sub SndByte( byte j )
{
byte m[1];
m[0]=j;
RS485Write( m );
while(RS485SendingData( ));
return;
}
Arduino側
#define DE_RE_PIN 2
byte RcvByte( )
{
byte i;
digitalWrite( DE_RE_PIN , LOW );
while(!Serial.available( ));
digitalWrite( LEDR , LOW );
i = Serial.read( );
digitalWrite( LEDR , HIGH );
return( i );
}
void SndByte( byte i )
{
digitalWrite( DE_RE_PIN , HIGH );
digitalWrite( LEDR , LOW );
Serial.write( i );
digitalWrite( LEDR , HIGH );
delayMicroseconds( 150 );
}
結局、1バイトのやりとりしか実現してません。(笑)
でも、まあ、それでも十分かと・・・
(ちなみに、このプログラムについて質問を受けても、現在の私には答えられませんので、悪しからず。)