目标C / Arduino通信速度减慢

时间:2014-02-05 18:02:33

标签: objective-c cocoa arduino serial-communication iokit

我已经为目标C中的cnc机器编写了一个G代码解释器/控制应用程序。一切都运行良好的前20 - 30秒,但之后整个事情停止另外20秒并恢复超慢。我制作了一个视频,你可以看到自己: video (about a minute)。据我所知,它不会跳过步骤或类似的东西,它只是非常慢。

在我的X代码控制台中,我可以看到代码以正常速度解释(每次写入一个字节时使用NSLog)。

我使用Arduino Cocoa reference中的IOkit进行通信。我尝试了很多不同的Baudrates,有时会延长它保持正常工作的时间,但最终总是会慢下来。

我需要清除串行缓冲区或其他东西之后的一些东西

// send a byte to the serial port
void writeByte(char val) {
        write(serialFileDescriptor, [[NSString stringWithFormat:@"%c" , val]  cStringUsingEncoding:NSUTF8StringEncoding], 1);

}

更新:我正在开发运行OS X 10.9的17“MBP上的应用程序,我在另一个运行10.9.1的其他13”MBP上尝试了这个应用程序但是当我使用其他13“MBP运行10.6.8时它工作正常!

关于这里发生了什么的任何想法?

2 个答案:

答案 0 :(得分:1)

可能你的写入速度比波特率快,但只有当输出buffere满时才会减速,因为你需要等待写入。这可以通过多种方式解决或解决

答案 1 :(得分:1)

事实证明,有一个流氓Serial.Write(),其中一些是在Arduino代码中(我放在那里找到另一个bug,只是忘了它)语句慢慢填满了串行缓冲区。