-2

我需要帮助来开发一个 C 代码来从终端读取数据(终端只接受 ASCII)并将这个 ascii 转换为整数。你知道或在哪里可以找到信息或任何建议?终端应接受来自用户的输入(例如:新温度值)并转换为整数。该整数值将通过接口(RS232 接口)传输到内存。

示例:消息结构 -

struct memoryTag1;
typedef struct memoryTag1{
char a[10]= {'+','0','2','6','.','5','E','A','\r'}; // first five bits is the new temperature value (+26.5), two bits (euipment name- EA), carriage reurn.
char b[10]= {'-','0','2','4','.','5','E','B','\r'};
char c[8]= {'+','0','2','0','E','C','\r'};
}Memory1;

先感谢您。

4

1 回答 1

1

超级终端是应用程序而不是设备,您不能“从超级终端读取数据”,它从串行端口读取数据。你需要问的是如何从串口读取数据。

在大多数平台上,您可以通过标准流 I/O 函数来读取它 -例如,尽管这些可能无法提供您所需的控制或灵活性fopen;在这种情况下,您将需要使用较低级别的 OS API 调用。freadfscanf

在 Windows 中最简单的方法是:

double data;
char equip[16] ;
FILE* portfp = 0 ;

system( "mode com1: baud=9600 parity=n data=8 stop=1" ) ;

portfp = fopen( "com1:", "r" ) ;
if( portfp != 0 )
{
    fscanf( portfp, "%f%s", &data, equip ) ;
    fclose(portfp ) ;
}

Win32 API 具有较低级别和更全面的串行 I/O 函数集,但并不那么简单。.NET 框架有一个串行 I/O 类,它比 Win32 更易于使用,但您不能在 C 中使用它——您需要 C# 或 C++/CLI。

于 2013-05-22T12:59:28.503 回答