Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!etlnews.etl.go.jp!news.trc!nf4.iij.ad.jp!news.iij.ad.jp!news.yamaha-motor.co.jp!proxy!sano
From: sano@kaiseki.yamaha-motor.co.jp (Taketoshi Sano)
Newsgroups: fj.os.linux,fj.sys.zaurus,fj.lang.perl
Subject: Data exchange with SHARP ZAURUS PI-4000
Followup-To: fj.os.linux
Date: 21 Feb 1997 07:47:43 GMT
Organization: Analysis Research Dept., YAMAHA MOTOR CO.LTD., Shizuoka, Japan
Lines: 264
Message-ID: <SANO.97Feb21164743@psp001.kaiseki.yamaha-motor.co.jp>
Reply-To: sano@kaiseki.yamaha-motor.co.jp
NNTP-Posting-Host: 133.215.6.18
Mime-Version: 1.0 (generated by tm-edit 7.100)
Content-Type: text/plain; charset=ISO-2022-JP
Xref: galaxy.trc.rwcp.or.jp fj.os.linux:729 fj.sys.zaurus:28 fj.lang.perl:1753
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.lang.perl&nb=1753&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

$B:4Ln$H?=$7$^$9!#(B

# followup-to: fj.os.linux $B$G$9!#(B

Linux $B$r;H$C$F(B SHARP ZAURUS $B$H$N%G!<%?8r49$r$7$?$$$H(B
$B9M$($F$$$^$9!#(B

<ftp://ftp.astec.co.jp/pub/zaurus> $B$+$i(B zaurus-dist.tar.gz
$B$rD:$$$F$-$^$7$?!#(B

$B$3$l<+BN$O!"(BSUN SPARCsystem/SunOS 4.1.3 $B$GF0$/(B perl $B$N%9%/%j%W%H(B
$B$J$N$G$9$,!"0JA0!"(Bfj.sources $B$GN.$l$?5-;v$K$h$k$H!"$3$N$&$A$N(B
RS-232C $B$GDL?.$9$k%W%m%0%i%`(B 2$B$D$r(B FreeBSD $B$GF0:n$9$k$h$&$K(B
$B$J$C$?$=$&$G!"$3$N(B FreeBSD $BMQ$N%9%/%j%W%H$b<j85$K$"$j$^$9!#(B

$B$G!"$3$N(B FreeBSD $BMQ$N%9%/%j%W%H$r(B Linux $B>e$G$bF0$/$h$&$K(B
$B$7$?$$$H9M$($F$$$^$9$,!"$J$K$V$s(B perl $B$N$3$H$b!"(BLinux $B$N(B
$B$3$H$b$o$+$i$J$$$N$G!"<ALd$5$;$FD:$-$^$9!#(B

 perl $B$N%9%/%j%W%H$J$N$G(B fj.lang.perl $B$K!"$=$l$+$i(B zaurus $B$K(B
$B4XO"$9$kOCBj$J$N$G(B fj.sys.zaurus $B$K$b%/%m%9%]%9%H$7$F$$$^$9$,!"(B
$B$?$V$s(B ioctl $B$N$H$3$m$r9g$o$;$l$PF0$/$N$@$m$&$H>!<j$K9M$($F!"(B
 fj.os.linux $B$r%U%)%m!<%"%C%W@h$K;XDj$5$;$FD:$-$^$7$?!#(B

$B<h$j$"$($:!"(Bzaurus $B$+$i%G!<%?$r5[$$>e$2$k%9%/%j%W%H$K$D$$$F$G$9$,!"(B
$B%*%j%8%J%k$N(B Sun OS 4.1.3 $BHG$H(B FreeBSD $BHG$N(B 2 $B$D$r(B diff -u $B$G(B
$BHf3S$9$k$H!"<!$N$h$&$J7k2L$G$7$?!#(B

****************************************************************
--- readzaurus.orgTue Apr  9 18:35:59 1996
+++ readzaurusFri Feb 21 15:27:39 1997
@@ -2,11 +2,13 @@
 #
 #       Contact person: ss@astec.co.jp/Shiu Sakashita
 #
-$TIOCGETP = 0x40067408;
-$TIOCSETP = 0x80067409;
-$CS8 = 0x30;
-$CREAD = 0x80;
-$CRTSCTS = 0x80000000;
+#       Modified for FreeBSD-2.1.0R by tokuyo@flab.fujitsu.co.jp/M.Tokuyo
+#
+$TIOCGETA = 0x402c7413;
+$TIOCSETA = 0x802c7414;
+$B9600 = 9600;
+$CS8 = 0x300;
+$CREAD = 0x800;
****************************************************************
 
$B$^$::G=i$N<ALd$G$9$,!"(B

$B$3$NItJ,!";d$N;H$C$F$$$k(B Slackware96 ( kernel 2.0.27 ) $B$N(B
 /usr/include/asm $B$N2<$N!"(B termbits.h $B$r;2>H$9$k$H!"(B

CS8, CREAD $B$O(B Sun OS $BHG$HF1$8(B 0x30, 0x80, $B$^$?(B
B9600 $B$O(B 0x0d $B$KJQ99!#(B

$B$^$?!"(BTIOCGETA / TIOCSETA $B$O!"(Bioctls.h $B$r;2>H$9$k$H!"(B
TCGETA / TCSETA $B$N(B 0x5405 / 0x5406 $B$r;H$C$F!"(B
$B2<(B4$B7e$r(B 7413 / 7414 $B$+$i(B 5405 / 5406 $B$KJQ99!#(B

$B$H9M$($?$N$G$9$,!"$3$l$GNI$$$G$N$7$g$&$+!)(B

 TIOCGSERIAL / TIOCSSERIAL $B$N(B 0x541E / 0x541F $B$b$"$j$^$9$7!"(B
 TIOCSETD / TIOCGETD $B$N(B 0x5423 / 0x5424 $B$b$"$j$^$9$,!"(B
RS-232C $B$G$NDL?.$K$O$I$l$r;H$C$?$iNI$$$N$G$7$g$&$+!)(B

****************************************************************
 $SIG{'INT'} = 'finish';
 
@@ -16,18 +18,18 @@
 $end = 1;
 }
 
-open(in,"/dev/ttya") || die "Can't open /dev/ttya";
+open(in,"/dev/cuaa0") || die "Can't open /dev/cuaa0";
****************************************************************

$B$3$NItJ,$O!"(B/dev/ttya $B$r(B /dev/ttyS0 $B$K$7$?$j!"(B /dev/cua0 $B$K(B
$B$7$?$j$7$F$_$^$7$?!#$I$A$i$G$b(B root $B$G<B9T$9$k8B$j$OLdBjL5$$(B
$B$h$&$G$9!#$3$3$N%(%i!<%a%C%;!<%8(B("Can't open (device name)")
$B$O$I$A$i$K$7$F$b=P$^$;$s!#(B
($B$b$A$m$s!"(B /dev/ttya $B$K$7$?$^$^$@$H!"$3$3$G%(%i!<$K$J$j$^$9!#(B)

****************************************************************
-$sgttyb_t   = 'C4 S';
-ioctl(in,$TIOCGETP,$sgttyb)
-|| die "Can't ioctl TIOCGETP: $!";
+$sgttyb_t   = 'L4C20L2';
+ioctl(in,$TIOCGETA,$sgttyb)
+|| die "Can't ioctl TIOCGETA: $!";
****************************************************************

$B8=:_H/@8$7$F$$$k%(%i!<%a%C%;!<%8$O$3$3$G$9!#(B

" Can't ioctl TIOCGETA: Invalid argument at ./readzaurus line 27."
$B$H$J$j$^$9!#(B

 2$BHVL\$N<ALd$H$7$F!"$?$V$s!"$3$3$G$O(B $sgttyb_t $B$rJQ99$9$kI,MW$,(B
$B$"$k$N$G$O$J$$$+$H;W$$$^$9$,!"(B/usr/include/asm/termios.h $B$r8+$k$H(B

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#define NCC 8
struct termio {
        unsigned short c_iflag;         /* input mode flags */
        unsigned short c_oflag;         /* output mode flags */
        unsigned short c_cflag;         /* control mode flags */
        unsigned short c_lflag;         /* local mode flags */
        unsigned char c_line;           /* line discipline */
        unsigned char c_cc[NCC];        /* control characters */
};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

$B$H$J$C$F$*$j!"0lJ}(B /usr/include/asm/termbits.h $B$r8+$k$H(B

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
typedef unsigned char   cc_t;
typedef unsigned int    speed_t;
typedef unsigned int    tcflag_t;

#define NCCS 19
struct termios {
        tcflag_t c_iflag;               /* input mode flags */
        tcflag_t c_oflag;               /* output mode flags */
        tcflag_t c_cflag;               /* control mode flags */
        tcflag_t c_lflag;               /* local mode flags */
        cc_t c_line;                    /* line discipline */
        cc_t c_cc[NCCS];                /* control characters */
};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

$B$H$J$C$F$$$^$9!#$?$V$s!"(B$sgttyb_t   = 'L4C20'; $B$H$9$k$+!"(B
$sgttyb_t   = 'S4C9'; $B$H$9$k$+$N$I$A$i$+$@$H;W$&$N$G$9$,!"(B
$B$I$A$i$r;H$&$Y$-$J$N$G$7$g$&$+!)(B

$B$^$?!"(B'L4C20' $B$H$7$?>l9g$K$O(B $TIOCGETA $B$N>e(B 4$B7e$r(B 0x4024$B!"(B
'S4C9' $B$H$7$?>l9g$K$O(B 0x4011 $B$H$9$k$N$@$m$&$H;W$&$N$G$9$,!"(B
$B$=$l$GNI$$$G$7$g$&$+!)(B

****************************************************************
 @ary = unpack($sgttyb_t,$sgttyb);
-$ary[4] |= $CS8;
-$ary[4] |= $CREAD;
-$ary[4] |= $CRTSCTs;
+$ary[2] = $CS8 | $CREAD ;
+$ary[24] = $B9600;
+$ary[25] = $B9600;
****************************************************************

 3$BHVL\$N<ALd$G$9$,!">e$N8D=j$O(B Sun OS $BHG$N$h$&$KDL?.B.EY$N@_Dj$b(B
 control mode flag $B$KF~$l$F!"(B

 $ary[2] |= $CS8;
 $ary[2] |= $CREAD;
 $ary[2] |= $B9600;

$B$H$9$l$PNI$$$+$H;W$&$N$G$9$,!"$3$l$GNI$$$G$7$g$&$+!)(B

****************************************************************
 $sgttyb = pack($sgttyb_t,@ary);
-ioctl(in,$TIOCSETP,$sgttyb)
-|| die "Can't ioctl TIOCSETP: $!";
+ioctl(in,$TIOCSETA,$sgttyb)
+|| die "Can't ioctl TIOCSETA: $!";
 
 while(! $end && ! eof(in)){
 read(in,$s,1);
****************************************************************

$B0J>e!"65$($FD:$-$?$$$H;W$$!"Ej9F$7$^$9!#(B
$B$h$m$7$/$*4j$$$7$^$9!#(B

$B$J$*!"0J2<$K(B Sun OS $BHG!"(B FreeBSD $BHG$=$l$>$l$N(B perl script $B$r(B
$B0zMQ$7$^$9!#(B

$B!V%*%j%8%J%k$N(B Sun OS 4.1.3 $BHG!W(B
********************* $B$3$3$+$i0zMQ(B **************************
#!/usr/local/bin/perl
#
#       Contact person: ss@astec.co.jp/Shiu Sakashita
#
$TIOCGETP = 0x40067408;
$TIOCSETP = 0x80067409;
$CS8 = 0x30;
$CREAD = 0x80;
$CRTSCTS = 0x80000000;

$SIG{'INT'} = 'finish';

$end = 0;

sub finish {
$end = 1;
}

open(in,"/dev/ttya") || die "Can't open /dev/ttya";

$sgttyb_t   = 'C4 S';
ioctl(in,$TIOCGETP,$sgttyb)
|| die "Can't ioctl TIOCGETP: $!";
@ary = unpack($sgttyb_t,$sgttyb);
$ary[4] |= $CS8;
$ary[4] |= $CREAD;
$ary[4] |= $CRTSCTs;
$sgttyb = pack($sgttyb_t,@ary);
ioctl(in,$TIOCSETP,$sgttyb)
|| die "Can't ioctl TIOCSETP: $!";

while(! $end && ! eof(in)){
read(in,$s,1);
last if $s eq '';
$c = ord($s);
printf("%c",$c);
last if $c == 0x1a;
}

********************* $B0zMQ=*N;(B **************************

$B!V(BFreeBSD $BHG!W(B
********************* $B$3$3$+$i0zMQ(B **************************
#!/usr/local/bin/perl
#
#       Contact person: ss@astec.co.jp/Shiu Sakashita
#
#       Modified for FreeBSD-2.1.0R by tokuyo@flab.fujitsu.co.jp/M.Tokuyo
#
$TIOCGETA = 0x402c7413;
$TIOCSETA = 0x802c7414;
$B9600 = 9600;
$CS8 = 0x300;
$CREAD = 0x800;

$SIG{'INT'} = 'finish';

$end = 0;

sub finish {
$end = 1;
}

open(in,"/dev/cuaa0") || die "Can't open /dev/cuaa0";

$sgttyb_t   = 'L4C20L2';
ioctl(in,$TIOCGETA,$sgttyb)
|| die "Can't ioctl TIOCGETA: $!";
@ary = unpack($sgttyb_t,$sgttyb);
$ary[2] = $CS8 | $CREAD ;
$ary[24] = $B9600;
$ary[25] = $B9600;
$sgttyb = pack($sgttyb_t,@ary);
ioctl(in,$TIOCSETA,$sgttyb)
|| die "Can't ioctl TIOCSETA: $!";

while(! $end && ! eof(in)){
read(in,$s,1);
last if $s eq '';
$c = ord($s);
printf("%c",$c);
last if $c == 0x1a;
}

********************* $B0zMQ=*N;(B **************************

--
