$ lsusb
Bus 004 Device 005: ID 0b95:1780 ASIX Electronics Corp.
[ 897.415497] eth0: register 'asix' at usb-0000:00:1d.7-5, ASIX AX88178 USB 2.0 Ethernet, 00:90:cc:c4:07:c2
UbuntuでPlanex GU-1000Tは,100Base-Tのハブだと使えないようだ.GigaHubに繋ぐとパケットが飛ぶようになった.
while(1) {
system("cls");
fprintf(stderr, "%f\n", val1);
fprintf(stderr, "%f\n", val2);
fprintf(stderr, "%f\n", val3);
fprintf(stderr, "\n");
}
<enable_idle_thread type="boolean">true</enable_idle_thread>
#include <stdio.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include "sio.h"
#define BUFLEN (64)
#define SIO_SPEED B115200
//#define SIO_DEVICE "/dev/ttyS0"
#define SIO_DEVICE "/dev/ttyUSB0"
#define SERVO_ID (1)
int
RSTorqueOnOff(int fd, short sMode)
{
unsigned char sendbuf[BUFLEN];
unsigned char sum;
int i;
int ret;
// バッファクリア
memset(sendbuf, 0x00, sizeof(sendbuf));
// パケット作成
sendbuf[0] = (unsigned char)0xFA; // ヘッダー1
sendbuf[1] = (unsigned char)0xAF; // ヘッダー2
sendbuf[2] = (unsigned char)SERVO_ID; // サーボID
sendbuf[3] = (unsigned char)0x00; // フラグ
sendbuf[4] = (unsigned char)0x24; // アドレス(0x24=36)
sendbuf[5] = (unsigned char)0x01; // 長さ(4byte)
sendbuf[6] = (unsigned char)0x01; // 個数
sendbuf[7] = (unsigned char)(sMode&0x00FF); // ON/OFFフラグ
// チェックサムの計算
sum = sendbuf[2];
for( i = 3; i < 8; i++ ){
sum = (unsigned char)(sum ^ sendbuf[i]);
}
sendbuf[8] = sum; // チェックサム
// 送信
ret = SioWrite(fd, sendbuf, BUFLEN);
return ret;
}
int
RSMove(int fd, short sPos, unsigned short sTime)
{
unsigned char sendbuf[28];
unsigned char sum;
int i;
int ret;
// バッファクリア
memset(sendbuf, 0x00, sizeof(sendbuf));
// パケット作成
sendbuf[0] = (unsigned char)0xFA; // ヘッダー1
sendbuf[1] = (unsigned char)0xAF; // ヘッダー2
sendbuf[2] = (unsigned char)SERVO_ID; // サーボID
sendbuf[3] = (unsigned char)0x00; // フラグ
sendbuf[4] = (unsigned char)0x1E; // アドレス(0x1E=30)
sendbuf[5] = (unsigned char)0x04; // 長さ(4byte)
sendbuf[6] = (unsigned char)0x01; // 個数
sendbuf[7] = (unsigned char)(sPos&0x00FF); // 位置
sendbuf[8] = (unsigned char)((sPos&0xFF00)>>8); // 位置
sendbuf[9] = (unsigned char)(sTime&0x00FF); // 時間
sendbuf[10] = (unsigned char)((sTime&0xFF00)>>8); // 時間
// チェックサムの計算
sum = sendbuf[2];
for( i = 3; i < 11; i++ ){
sum = (unsigned char)(sum ^ sendbuf[i]);
}
sendbuf[11] = sum; // チェックサム
// 送信
ret = SioWrite(fd, sendbuf, BUFLEN);
return ret;
}
int
main(int argc, char *argv[])
{
int ret;
int fd_sio;
unsigned char buf[BUFLEN];
memset(buf, 0, BUFLEN);
fd_sio = SioOpen(SIO_DEVICE, SIO_SPEED, CREAD | CLOCAL | CS8);
fprintf(stderr, "fd=%d\n", fd_sio);
ret = RSTorqueOnOff(fd_sio, 1);
ret = RSMove(fd_sio, 1000, 0);
usleep(2000000);
ret = RSMove(fd_sio, 0, 0);
usleep(2000000);
ret = RSTorqueOnOff(fd_sio, 0 );
SioClose(fd_sio);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#define BUFLEN (64)
int
SioOpen(char *dev, int speed, unsigned int c_flag)
{
int fd;
struct termios ios;
if((fd = open(dev, O_RDWR | O_NDELAY)) < 0) {
perror("SioOpen");
exit(-1);
}
if(!isatty(fd)) {
close(fd);
fprintf(stderr, "%s : is not a tty\n", dev);
exit(1);
}
memset(&ios, 0, sizeof(ios));
ios.c_cflag = c_flag;
cfsetispeed(&ios, speed);
cfsetospeed(&ios, speed);
if(tcsetattr(fd, TCSANOW, &ios) < 0) {
perror("tcsetattr");
exit(-1);
}
return fd;
}
int
SioClose(int fd)
{
return close(fd);
}
int
SioWrite(int fd, unsigned char *buf, int size)
{
int len;
len = write(fd, buf, size);
return len;
}
int
SioRead(int fd, unsigned char *buf)
{
int len;
fprintf(stderr, "SioRead\n");
len = read(fd, buf, BUFLEN);
return len;
}
export TEXINPUTS=./:/usr/share/texmf-tetex/source/latex//:ここでは見やすく改行してるけど,改行せずに1行で書いてね.
/usr/share/texmf/ptex/platex//:/usr/share/texmf-texlive/tex//