串行通信重置 /etc/profile (linux)

serial communication reset /etc/profile (linux)

我正在研究 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" 发送到串口,并且 "String read from serial port : TEXT" 出现在 gtkterm 的终端副本上,然后是 "running etc/profile"。就像我之前说的,我怀疑我在发送字符串的同时使用带有 gtkterm 的序列号,但我必须让它工作才能使用该板,我想听听您对这个问题的看法。

感谢您以后的回答。

您已将系统配置为 运行 同一串口上的另一个程序(login 或其亲属)。

勾选/inittab。确保没有使用该端口启动 logingetty 的实例。 (您仍然需要 运行在另一个串口上使用它,即您用于终端会话的串口)