我最近将该文件添加Serial.c
到Serial.h
我的 Xcode 项目中。
的代码Serial.c
如下,
#include <stdio.h> /* Standard input/output definitions */
#include <stdlib.h>
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
/*
* 'open_port()' - Open serial port on dock connector pins 13RX / 12TX
*
* Returns the file descriptor on success or -1 on error.
*/
int open_port(void)
{
int fd = -1; /* File descriptor for the port */
struct termios options;
fd = open("/dev/tty.iap", O_RDWR | O_NOCTTY | O_NDELAY); // O_NOCTTY - don't be controlling terminal, O_NODELAY don't care about DCD signal state
if ( fd == -1)
{
// couldn't open the port
perror("open_port: Unable to open /dev/tty.iap - ");
}
else
fcntl(fd, F_SETFL, 0);
tcgetattr(fd, &options); // get current options for the port
// set the baud rate
cfsetispeed(&options, B2400);
cfsetospeed(&options, B2400);
// enable the receiver and set local mode
options.c_cflag |= (CLOCAL | CREAD);
// set the new options for the port
tcsetattr(fd, TCSANOW, &options);
return (fd);
}
该serial.h
文件,
NSInteger openPort();
我正在尝试将来自 iPhone 的串行 RX 数据流的输出转换为 NSLog 语句。
我在文件中调用OpenPort
函数ViewControllerSerialConsole.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
#if !TARGET_IPHONE_SIMULATOR
NSInteger serial = openPort();
NSLog(@"The serial data is %d",serial);
//_serialView.text = serial;
#endif
}
该程序在 iPhone 模拟器上编译良好,但在 iPhone 上无法编译。
我收到以下错误消息,
架构 armv7 的未定义符号:“_openPort”,引用自:-[ViewControllerSerialConsole viewDidLoad] in ViewControllerSerialConsole.o ld:未找到架构 armv7 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
ld:未找到架构 armv7 的符号
任何有关解决此问题的帮助将不胜感激。