From owner-FreeBSD-users-jp@jp.FreeBSD.org Sun Nov 11 17:38:23 2012
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id qAB8cN114262;
	Sun, 11 Nov 2012 17:38:23 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from sh.kkdlabs.jp (s236214.ppp.asahi-net.or.jp [220.157.236.214])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id qAB8cMC14257
	for <FreeBSD-users-jp@jp.FreeBSD.ORG>; Sun, 11 Nov 2012 17:38:22 +0900 (JST)
	(envelope-from kohi@kkdlabs.jp)
Received: from localhost (lars.kkdlabs.jp [10.2.255.245])
	by sh.kkdlabs.jp (8.14.5/8.14.4) with ESMTP id qAB8cLSW070621
	for <FreeBSD-users-jp@jp.FreeBSD.ORG>; Sun, 11 Nov 2012 17:38:22 +0900 (JST)
	(envelope-from kohi@kkdlabs.jp)
Message-Id: <20121111.173821.501318127.kohi@kkdlabs.jp>
To: FreeBSD-users-jp@jp.FreeBSD.org
From: Koh-ichi Ito <kohi@kkdlabs.jp>
X-Mailer: Mew version 6.3 on Emacs 23.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Sun, 11 Nov 2012 17:38:21 +0900
X-Sequence: FreeBSD-users-jp 94046
Subject: [FreeBSD-users-jp 94046] umodem =?ISO-2022-JP?B?GyRCJEcbKEI=?=
 PICC18F2550 =?ISO-2022-JP?B?GyRCJEslIiUvJTslOSQ5JGskSBsoQg==?=
 =?ISO-2022-JP?B?GyRCSVQwQkRqGyhC?=
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: kohi@kkdlabs.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

$B$$$H$&$H?=$7$^$9!#:$$C$F$$$k;v$,$"$j!"%"%I%P%$%9$r$$$?$@$-$?$/%a!<%k$7(B
$B$^$9!#(B

TriState $B$N%G%8%?%k5$057W$K(B FreeBSD 8.3-RELEASE $B$G%"%/%;%9$r;n$_$F$$$^(B
$B$9!#$3$s$J"-$d$D$G!"(BPIC18F2550 $B$H$$$&%A%C%W$r;H$C$F$$$^$9!#(B

- http://www.tristate.ne.jp/digitalbarome.htm
- http://www.tristate.ne.jp/ftp/manu029.pdf

umodem $B$r;H$&$H(B

ugen1.4: <Mecanique> at usbus1
umodem0: <Mecanique Swordfish Virtual COM Port, class 2/0, rev 2.00/1.10, addr 4> on usbus1
umodem0: data interface 1, has no CM over data, has no break

$B$HG'<1$5$l!"(Bcu -l /dev/ttyU0 $B$G0l1~$NF0:n$O3NG'$G$-$F$$$^$9!#(B

$B$H$3$m$,5<;w%3!<%I$G=q$/$H(B($B<B:]$N%9%/%j%W%H$OD9$$$N$GKvHx$K:\$;$^$9(B)

#!/usr/bin/perl

while (1) {
      sysopen($fd, O_RDWR | O_NONBLOCK);
      tcgetattr();
      cflag |= CLOCAL;
      iflag |= ICANON;
      iflag &= ~(ICRNL | INLCR);
      oflag &= ~OPOST
      tcsetattr();
      select(undef, fds, undef, 1.0);
      syswrite();
      sleep(1);	# $B$3$l$rF~$l$J$$$H1~Ez$,7g$1$k(B
      select(fds, undef, undef, 1.0);
      sysread();
      close();
}

$B$N$h$&$JA`:n$r$7$?$H$3$m!"2s?t$O0lDj$7$J$$$s$G$9$,%k!<%W$N(B15$B2sL\!"(B24$B2s(B
$BL\!"(B5$B2sL\!"(B3$B2sL\!"(B17$B2sL\!"$N$h$&$J2s?t$G!"(Bsysread()$B$N<jA0$N(B select()$B$,(B
$B%?%$%`%"%&%H$7$F$7$^$$$^$9!#(B

$B0lEY$3$&$J$k$H!"(Bcu $B$G%"%/%;%9$7$F$bH?1~$,$"$j$^$;$s!#(B

$B$^$?!"<j:n6H$J$N$GDjNLE*$J$3$H$O8@$($^$;$s$,!"(Bcu $B$G(B $B%3%^%s%I$rAw$C$F1~(B
$BEz$r<u?.$7$F@ZCG!"$H$$$&A`:n$r2?EY$b7+$jJV$9$H!"F1MM$N;v>]$,5/$-$^$7$?!#(B
$B@\B3$7$?$^$^%3%^%s%I$NAw?.$H1~Ez$N<u?.$r7+$jJV$7$F$b!":,5$$NB3$/HO0O$N(B
$B7+$jJV$7$G$O!";v>]$O5/$-$^$;$s$G$7$?!#(B

$B$3$N;v>]$,H/@8$7$?$H$-!"(BFreeBSD $B$N(B OS $B<+BN$O%O%s%0%"%C%W$7$F$*$i$:!"B>(B
$B$N%W%m%;%9$O2?$NLdBj$b$J$/F0:n$7$F$$$k$h$&$K8+$(!"5$057W$NB&$K$D$$$F$O(B
$B$h$/$o$+$i$J$$$s$G$9$,!"(BLED$B!"(BLCD $B$NI=<($r8+$k8B$j@5>oF0:n$rB3$1$F$$$k$h(B
$B$&$K8+$($^$9!#(BUSB $B%1!<%V%k$rH4$-:9$7$9$k$H85DL$j%3%^%s%I$H1~Ez$NAw<u?.(B
$B$,$G$-$k>uBV$KI|5"$7$^$9!#(B

$B$=$l$H!"%+!<%M%k$N?4F@$OA4A3$J$$$s$G$9$,!"2?$+<j$,$+$j$,$D$+$a$J$$$+$H(B
$B;W$$!"(Bsysctl $B$G(B hw.usb.umodem.debug $B$r(B1$B$K$7$F$_$k$H!";v>]$,5/$-$J$$$H$$(B
$B$&$*7h$^$j$N%Q%?!<%s$G$9!#(B

$BJL$N(B PC $B$G$G$9$,!"(BUbuntu 12.04LTS $B$G$O!"F1$8%9%/%j%W%H$r<B9T$7$F$b;v>](B
$B$O5/$-$^$;$s!#(B

$B0lJ}(B

#!/usr/bin/perl

sysopen($fd, O_RDWR | O_NONBLOCK);
tcgetattr();
cflag |= CLOCAL;
iflag |= ICANON;
iflag &= ~(ICRNL | INLCR);
oflag &= ~OPOST
tcsetattr();
while (1) {
      select(undef, fds, undef, 1.0);
      syswrite();
      sleep(1);	# $B$3$l$rF~$l$J$$$H1~Ez$,7g$1$k(B
      select(fds, undef, undef, 1.0);
      sysread();
}

$B$N$h$&$K(B close()$B$7$J$$$^$^%k!<%W$r2s$9$H(B100$B2s0J>e2s$7$F$bJ?5$$G$9!#(B

TriState $B$N(B Web $B%Z!<%8$K$"$k!V!z(BUSB$BDL?.$NIT0BDj$K$D$$$F!W$K$D$$$F$O!"9X(B
$BF~;~4|$,$D$$:G6a$G$9$7!"L\;k$G$b3:Ev$7$F$$$J$$$h$&$K8+$($k$3$H!">e=R$N(B
$B$h$&$K(B Ubuntu $B$G$O;v>]$,5/$-$J$$$3$H$+$i!"<j5v$N8DBN$O3:Ev$7$F$$$J$$$H(B
$BH=CG$7$F$$$^$9!#(B

$B0J>e$N$h$&$J>u67$G:$$C$F$$$^$9!#$I$J$?$+%"%I%P%$%9$r$$$?$@$1$J$$$G$7$g(B
$B$&$+(B? $B$I$&$>$h$m$7$/$*4j$$$7$^$9!#(B

$B<B:]$N%9%/%j%W%H(B:
#!/usr/bin/perl

use strict;
use warnings;
use Fcntl;
use POSIX;

my ($fh, $fd, $fds, $tios, $tios0, $c_cflag, $c_iflag, $c_oflag,
	$tbuf, $rbuf, $tlen, $k, $n);

$k = 1;
$tbuf = "BARH\r\n";
$tlen = length($tbuf);
#while (1) {	# while (1) $B$O!"$I$A$i$+0lJ}$@$1@8$+$9(B
	if (!sysopen($fh, $ARGV[0], O_RDWR | O_NONBLOCK) ) {
		print(STDERR "$0: open($ARGV[0]): $!\n");
		exit(1);
	}
	$fd = fileno($fh);
	$tios = POSIX::Termios->new();
	$tios0 = POSIX::Termios->new();
	if (!($tios->getattr($fd) ) ) {
		print(STDERR "$0: getattr($ARGV[0]): $!\n");
		exit(1);
	}
	$c_cflag = $tios->getcflag();
	$tios->setcflag($c_cflag | POSIX::CLOCAL);
	$c_iflag = $tios->getiflag();
	$tios->setiflag($c_iflag | POSIX::ICANON);
	$tios->setiflag($c_iflag & ~(POSIX::ICRNL | POSIX::INLCR) );
	$c_oflag = $tios->getoflag();
	$tios->setoflag($c_oflag & ~POSIX::OPOST);
	if (!$tios->setattr($fd, POSIX::TCSADRAIN) ) {
		close($fh);
		print(STDERR "$0: setattr($ARGV[0]): $!\n");
		exit(1);
	}
	while (1) {	# while (1) $B$O!"$I$A$i$+0lJ}$@$1@8$+$9(B
		print(STDERR "k = $k\n");
		$fds = '';
		vec($fds, fileno($fh), 1) = 1;
		print(STDERR "calling send select()\n");
		if (!($n = select(undef, $fds, undef, 1.0) ) ) {
			$tios0->setattr($fd, POSIX::TCSADRAIN);
			close($fh);
			print(STDERR "$0: send select(): timeout\n");
			exit(1);
		}
		print(STDERR "send select(): n = $n\n");
		print(STDERR "calling syswrite()\n");
		if (!($n = syswrite($fh, $tbuf, $tlen) ) ) {
			$tios0->setattr($fd, POSIX::TCSADRAIN);
			close($fh);
			print(STDERR "$0: write($ARGV[0]): $!\n");
			exit(1);
		}
		print(STDERR "back from syswrite()\n");
		sleep(1);	# unanalyzed timing issue...
		$fds = '';
		vec($fds, fileno($fh), 1) = 1;
		print(STDERR "calling recv select()\n");
		if (!($n = select($fds, undef, undef, 1.0) ) ) {
			$tios0->setattr($fd, POSIX::TCSADRAIN);
			close($fh);
			print(STDERR "$0: recv select(): timeout\n");
			exit(1);
		}
		print(STDERR "calling sysread()\n");
		if (!($n = sysread($fh, $rbuf, 16) ) ) {
			$tios0->setattr($fd, POSIX::TCSADRAIN);
			close($fh);
			print(STDERR "$0: read($ARGV[0]): $!\n");
			exit(1);
		}
		print(STDERR "back from sysread()\n");
		print("n = $n, rbuf = $rbuf\r\n");
		$k++;
	}
	$tios0->setattr($fh, POSIX::TCSADRAIN);
	close($fh);
#}
exit(0);

-----
kkdlabs.jp, featuring Koh-ichi Ito as just another DNS freak in town.
