繁体   English   中英

串行通讯重置/ 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”发送到串行,并且在gtkterm的终端副本上出现了“从串行端口读取字符串:TEXT”,后跟“ running etc / profile”。 就像我之前说过的那样,我怀疑我在同时发送gtkterm和串行信号的同时发送了字符串,但是我必须使它工作才能使用板,并且我希望您对此发表意见。

谢谢您将来的回答。

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

检查/inittab 确保没有使用该端口启动logingetty实例。 (您仍然希望它在另一个串行端口(用于终端会话的端口)上运行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM