通过 SparkFun 的 XBee USB 加密狗在 Raspberry Pi 3 和 XBee S2C 之间进行串行通信

通过 SparkFun 的 XBee USB 加密狗在 Raspberry Pi 3 和 XBee S2C 之间进行串行通信

如何通过 USB 端口实现 XBee S2C 和 Raspi 3 之间的串行通信?

为此,我使用Sparkfun 的 XBee explorer 加密狗。我有几个这样的组合来创建一个 ZigBee 网络并测试用 C 语言编写的协议。但是,我在读取时遇到了问题/dev/ttyUSB0。顺便说一句,问题可能出在发送方。

XBees 正在使用下面给出的串行接口配置运行:

115200 baudrate
No parity
1 stop bit
3 character times for packetization timeout
CTS flow control is enabled
RTS flow control is disabled
API mode is enabled
API output mode is native

因此,我在代码中初始化了端口,如下所示:

int initport(int fd)
{
int portstatus = 0;

    struct termios options;
    // Get the current options for the port...
    tcgetattr(fd, &options);
    // Set the baud rates to 9600...'textB' un
    cfsetispeed(&options, B115200);
    cfsetospeed(&options, B115200);
    // Enable the receiver and setSTX local mode...
    options.c_cflag |= (CLOCAL | CREAD);

    //options.c_cflag &= ~PARENB;
    //options.c_cflag &= ~CSTOPB;   //When these are disabled the XBee receives data.
    options.c_cflag &= ~CSIZE;
    options.c_cflag |= CS8;
    //options.c_cflag |= SerialDataBitsInterp(8);           /* CS8 - Selects 8 data bits */
    options.c_cflag &= ~CRTSCTS;                            // disable hardware flow control
    options.c_iflag &= ~(IXON | IXOFF | IXANY);           // disable XON XOFF (for transmit and receive)
    //options.c_cflag |= CRTSCTS;                     /* enable hardware flow control */


    options.c_cc[VMIN] = 200;     //min carachters to be read
    options.c_cc[VTIME] = 5;    //Time to wait for data (tenths of seconds)


    // Set the new options for the port...
    //tcsetattr(fd, TCSANOW, &options);


    //Set the new options for the port...
    tcflush(fd, TCIFLUSH);
    if (tcsetattr(fd, TCSANOW, &options)==-1)
    {
        perror("On tcsetattr:");
        portstatus = -1;
    }
    else
        portstatus = 1;

    return portstatus;
}

我想在这里问这个问题,因为我相信我需要对某些文件(例如/boot/config.txt和/或)进行一些修改/boot/cmdline.txt。在我在网上搜索时,出现了这种修改,但它们在我的情况下不起作用。

最后,Raspis 运行最新版本的 Raspbian Jessie 和 Linux 内核 4.9.35-v7+。

$uname -a
Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux

$cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

如果您对我的设置有任何疑问,请随时询问。

先感谢您。

答案1

我发这个问题已经有一段时间了,所以我甚至忘记我问过这样一个问题。问题是关于激活 XBee S2C。我唯一要做的就是将“U”和“B”写入串行总线。之后,设备就可以监听您将写入的数据了。我在我们的期刊论文中提到了这个问题和解决方案,可以在以下网址访问:https://authors.elsevier.com/a/1XK7x3sf~xzj7o

再次感谢!

答案2

dialout您在此处展示的加密狗使用 FTDI 芯片,因此这是一个基本的 USB 到 RS232 转换器。在 Ubuntu 中,您可以通过将用户添加到和组中来轻松使其工作tty。有关更多信息,请参阅此主题:FTDI 的 UDEV 规则尚未完全发挥作用

相关内容