如何绕过Arduino中的串口库

时间:2016-09-02 18:39:40

标签: arduino

我想编写自己的代码来管理Arduino串口(9位串口),所以我需要绕过Serial1 TX的预编程arduino ISR向量。我可以通过修改HardwareSerial1.cpp来做到这一点,但我不喜欢我的代码变得不可移植并且是库更新的潜在受害者这一事实。

您是否知道如何编写不同的ISR向量而不会混淆库代码?我在自己的代码中尝试了这一点无济于事:

//bypass arduino library for serial 1 and use this ISR instead
ISR(UART1_UDRE_vect) 
{ 
    9bitSerial.interrupt(); 
} 

报告了以下错误,这似乎证实该方法不起作用:

ISR.cpp:11:25:错误:数字常量之前的预期unqualified-id ISR.cpp:扩展宏' UART1_UDRE_vect'

任何线索?

1 个答案:

答案 0 :(得分:0)

最安全的方法是将整个HardwareSerial类复制到一个命名不同的类中。然后继续进行修改。这正是我为NeoHWSerialNeoICSerial所做的:它们是从HardwareSerialAltSoftSerial复制并重命名的。

但是,构建中SerialxHardwareSerial的实例)的所有用法都必须替换为您的类的实例。您将无法将HardwareSerial的实例与您的类混合(重复的ISR错误)。但是,如果您的班级仅添加行为,那就没什么大不了的。其他不使用9位的实例不应受到影响。如果您不介意,我有兴趣将这些更改折叠到NeoHWSerial中。我偶尔也会看到NeoSWSerial的9位串口。