[Armadillo:02464] COM4のシリアル通信について

Masanori Ito email@hidden
2007年 11月 27日 (火) 09:27:21 JST


いつもお世話になっています。伊藤と申します。
現在、Armadillo210を用いてCOM4から機械の制御を
シリアル通信で行おうとしているのですがうまくいきません。
ハイパーターミナルから見ても、COM4には出ていません。
初歩的なことで申し訳ございませんが、どなたかご回答
いただけますようお願い致します。
 
 なお、現状、作業をしているソースは以下の通りです。
#include<stdio.h>
#include<stdlib.h>
#include<strings.h>
#include<termios.h>
#include<unistd.h>
#include<fcntl.h>
#include <stdint.h>
#include <sys/signal.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
 
 #define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyAM1"
#define _POSIX_SOURCE 1 
 #define FALSE 0
#define TRUE 1
 
extern uint16_t StrwCalcCRC16( uint8_t * pbData, int iDataLen, int iOpt );
 
volatile int STOP=FALSE; 
 
 void signal_handler_IO (int status);   
 
 int wait_flag=TRUE;                    
 
 int main(int argc,char * argv[])
 {
     int fd, res;
     struct termios oldtio,newtio;
     struct sigaction saio;        
 
     char buf[8];                 
      char rtn[13];
    fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
    if (fd <0)
    { 
        perror(MODEMDEVICE);
             exit(-1);
      }
 
      saio.sa_handler = signal_handler_IO; 
      //saio.sa_mask = 0;
      saio.sa_flags = 0;
      saio.sa_restorer = NULL;
      sigaction(SIGIO,&saio,NULL);
      fcntl(fd, F_SETOWN, getpid());
      fcntl(fd, F_SETFL, FASYNC);
      tcgetattr(fd,&oldtio); 
      newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
      newtio.c_iflag = IGNPAR | ICRNL;
      newtio.c_oflag = 0;
      newtio.c_lflag = ICANON;
 
      newtio.c_cc[VMIN]=1;
      newtio.c_cc[VTIME]=0;
      tcflush(fd, TCIFLUSH);
      tcsetattr(fd,TCSANOW,&newtio);
 
      bzero(&buf,sizeof(buf));
     bzero(&rtn,sizeof(rtn));
      bzero(&buf2,sizeof(buf2));
 
      buf[0] = 0x05;
      buf[1] = 0x54;
      buf[2] = 0x30;
      buf[3] = 0x30;
      buf[4] = StrwCalcCRC16(buf,4,0);
      buf[6] = 0x04;
      while (STOP==FALSE)
      {
         res = write(fd,buf,7);
         printf(".\n");
         usleep(100000);
       if (wait_flag==FALSE)
         { 
             res = read(fd,rtn,12);
             buf[res]=0;
            printf(":%s:%d\n", buf, res); 
           if (res==1)
           STOP=TRUE; 
           wait_flag = TRUE; 
        }
     }
    close(fd);  
     return(0);
  }
 
 void signal_handler_IO (int status)
 {
   printf("received SIGIO signal.\n");
   wait_flag = FALSE;
 }
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20071127/e6b6bbb8/attachment.html>


armadillo メーリングリストの案内