【发布时间】:2015-04-29 00:57:41
【问题描述】:
我正在研究 pc (ubuntu) 和嵌入式 linux (2.6.24) 板之间的串行通信。串行通信本身似乎可以工作(我使用来自http://serialib.free.fr/html/index.html 的Serialib)但是每次我在板上的应用程序停止收听/etc/profile 文件时都会被板调用(对于不使用的应用程序不会发生这种情况)串行)。
要知道,当我在板上启动应用程序时,我在 PC 上打开了一个 gtkterm 来跟踪板子的终端(也使用串行端口),我认为这是罪魁祸首重置 /etc/profile 但我不确定。
我的阅读应用程序代码
#include <stdio.h>
#include "serialib.h"
#include <QCoreApplication>
#include <QSettings>
#include <QProcess>
#include <iostream>
#if defined (_WIN32) || defined( _WIN64)
#define DEVICE_PORT "COM1" // COM1 for windows
#endif
#ifdef __linux__
#define DEVICE_PORT "/dev/ttyS0" // ttyS0 for linux
#endif
int main()
{
serialib LS; // Object of the serialib class
int Ret,res; // Used for return values
char Buffer[128];
// Open serial port
Ret=LS.Open(DEVICE_PORT,115200); // Open serial link at 115200 bauds
if (Ret!=1) { // If an error occured...
printf ("Error while opening port. Permission problem ?\n"); // ... display a message ...
return Ret; // ... quit the application
}
printf ("Serial port opened successfully !\n");
// Read a string from the serial device
Ret=LS.ReadString(Buffer,'\n',128,5000); // Read a maximum of 128 characters with a timeout of 5 seconds
// The final character of the string must be a line feed ('\n')
if (Ret>0) // If a string has been read from, print the string
printf ("String read from serial port : %s",Buffer);
else
printf ("TimeOut reached. No data received !\n"); // If not, print a message.
// Close the connection with the device
LS.Close();
return 0;
}
我在超时限制内向串口发送“TEXT\n”,并且在 gtkterm 的终端副本上出现“从串口读取的字符串:TEXT”,然后是“正在运行的 etc/profile”。就像我之前说过的,我怀疑我在发送字符串的同时使用带有 gtkterm 的串行,但我必须让它工作才能使用板,我希望你对这个问题发表意见。
感谢您以后的回答。
【问题讨论】:
标签: c linux serialization