我尝试用PHP在Linux平台上读取串口。
但是我不能读取任何数据。当我尝试使用.net阅读时,这一次我可以阅读。
我使用"php_serial.class.php“类进行串口操作。你可以通过这个链接阅读这个类:
我的代码是这样的:
<?php
include "php_serial.class.php";
// Let's start the class
$serial = new phpSerial;
// First we must specify the device. This works on both linux and wi
我的工作是机器人,它必须控制使用无线串行通信。机器人在微控制器上运行(通过燃烧一个.hex文件)。我想用我的Linux () PC来控制它。我是新来的串口编程。我能够发送数据,但我不能读取数据。
在微控制器上运行的几段代码:
函数发送数据:
void TxData(unsigned char tx_data)
{
SBUF = tx_data; // Transmit data that is passed to this function
while(TI == 0) // Wait while data is being transmitted
;
}
我试着通过linux a中的串口从我放在华为3g usb调制解调器中的sim卡上读取sms消息。在一些sms消息显示在屏幕上之前,我必须多次执行脚本。有时它会显示不寻常的字符。我所要做的就是使用AT命令、C和串口从SIM卡中读取sms消息。下面是我使用的代码。
int main(){
int fd;
struct termios options;
/* open the port */
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{ /* Could not open the p
我正在编写代码,以便在linux中通过串口与另一台设备进行通信。
我想要超时的非阻塞,即使0个字符到达。termios结构允许您设置VTIME和VMIN,但是如果VMIN大于0,并且返回0个字符,则读取调用将阻塞forever...WTF,这是为什么。这似乎不包括其他设备在短时间内停机,而现在我的应用程序在读取调用时被阻塞的情况。这似乎是一个需要忽视的关键行为。我真的不想实现我自己的超时。
Write command
Read block timeout of around .3s(if 0 characters, still wait max of .3s)
我使用从串口到usb的转换器,在Windows中可以打开串口属性并设置一个复选框RS-485,只有在此之后,我才能从设备接收数据。如何在Linux中进行同样的操作?因为默认情况下,我得到的结果与未检查的RS-485在Windows中相同:
Port name - /dev/ttyACM0; Method name - readBytes(); Serial port operation timeout (500 ms).
execute try 2 error: I/O exception - failed to read
我的设备是:
Bus 001 Device 008: ID 04e2:
我希望在Linux和Windows上以一致的方式从串口读取数据。我注意到read()和ReadFile()的行为略有不同。考虑以下代码:
// on Linux
int r = read(fd, buf, 256);
// on Windows
ReadFile(handle, buf, 256, &r, NULL);
这两个函数都将永远阻塞,直到数据到达。到现在为止还好。但是,有一点不同:read()将在至少1个字节到达时立即返回,而ReadFile()在所有256个字节到达之前不会返回。
因此,我想问:有没有办法让ReadFile()的行为像Linux上的read()一样,也就是
如何使用Posix/C函数检查Linux中是否已经打开了串口?我想检查串口的状态,以检查串口是否打开。
我想知道哪些方法适用于:
检查文件描述符以查看串口是否打开
检查串口文件名以查看串口是否打开,在下面的示例中是“/dev/ttyUSB0 0”
--
// This code is for example purposes only
int open_port()
{
int fd;
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd < 0)
{
p
我有一个Python程序,它通过PySerial模块从串口读取数据。我需要记住的两个条件是:我不知道会有多少数据到达,也不知道什么时候需要数据。
在此基础上,我提出了以下代码片段:
#Code from main loop, spawning thread and waiting for data
s = serial.Serial(5, timeout=5) # Open COM5, 5 second timeout
s.baudrate = 19200
#Code from thread reading serial data
while 1:
tdata = s.read(500