• 4739阅读
  • 1回复

我写的发送16进制信号代码(c语言) 有点问题 大家帮忙看下 [复制链接]

上一主题 下一主题
离线zcgme
 

只看楼主 倒序阅读 楼主  发表于: 2009-01-04
— 本帖被 XChinux 执行加亮操作(2009-01-06) —
这个是发送的代码
/**
*@breif 打开串口
*/
int OpenDev(char *Dev)
{
int    fd = open( Dev, O_RDWR|O_NOCTTY);        //| O_NOCTTY | O_NDELAY
    if (-1 == fd)
        { /*设置数据位数*/
            perror("Can't Open Serial Port");
            return -1;
        }
    else
    return fd;

}
/**
*@breif     main()
*/
int main(int argc, char **argv)
{
    int fd;
    int nwrite;
    char sbuf[5];/*待发送的内容*/
                sbuf[0] = 0xAA;
                sbuf[1] = 0xBB;
                sbuf[2] = 0x02;
                sbuf[3] = 0x19;
                sbuf[4] = 0x1b;
        int length=sizeof(sbuf);/*发送缓冲区数据宽度*/
    char *dev ="/dev/ttyS0";
    fd = OpenDev(dev);
    if (fd>0)
    set_speed(fd,19200);
    else
        {
        printf("Can't Open Serial Port!\n");
        exit(0);
        }
  if (set_Parity(fd,8,1,'N')== FALSE)
  {
    printf("Set Parity Error\n");
    exit(1);
  }

nwrite=write(fd,sbuf,length);/*数据接收*/

if(nwrite==-1)

{

    perror("write");/*读状态标志判断*/

}

printf("the number if char sent is %d\n",nwrite);

    //close(fd);
    //exit(0);
}


这个是接收的代码

/**
*@breif 打开串口
*/
int OpenDev(char *Dev)
{
int    fd = open( Dev, O_RDWR|O_NOCTTY);        //| O_NOCTTY | O_NDELAY
    if (-1 == fd)
        { /*设置数据位数*/
            perror("Can't Open Serial Port");
            return -1;
        }
    else
    return fd;

}
/**
*@breif     main()
*/
int main(int argc, char **argv)
{
    int fd;
    int nread;
    unsigned char hd[512],*buff;
    char *dev ="/dev/ttyS0";
    fd = OpenDev(dev);
    if (fd>0)
    set_speed(fd,19200);
    else
        {
        printf("Can't Open Serial Port!\n");
        exit(0);
        }
  if (set_Parity(fd,8,1,'N')== FALSE)
  {
    printf("Set Parity Error\n");
    exit(1);
  }
  while(1)

    { buff=hd;

      int nread=read(fd,buff,1);

      if(nread!=-1)

      {

          printf("%x\n",*buff);

      }

      else

      {

          printf("can not read data! ");

      }

    }
    //close(fd);
    //exit(0);
}


我把这段数据 aa bb 02 19 1b发送给rfid 应该收回的是 aa bb 04 19 04 00 19 
但我受到的却是aa bb 19 19   更郁闷的是 我发别的代码过去 都无法得到反馈

这个是怎么回事。 顺便说下 这个代码在我linux重装前 没问题 重装后就这样了



离线zcgme

只看该作者 1楼 发表于: 2009-01-05
可能是我自己电脑抽疯而已 别人地方可以用的
快速回复
限100 字节
 
上一个 下一个