在python 3.5.1中,可以使用await/async,但是,要使用它(因为我不支持),你需要有一个等待对象.等待对象是一个定义__await__()返回迭代器的方法的对象.更多信息在这里.但我不能谷歌任何有这个的例子,因为大多数例子都有某种asyncio.sleep(x)来模仿等待对象.
我的最终目标是制作简单的websocket串口服务器,但是,我无法通过这第一步.这是我的(非工作代码).
import serial
import asyncio
connected = False
port = 'COM9'
#port = '/dev/ttyAMA0'
baud = 57600
timeout=1
class startser(object):
def __init__(self, port, baud):
self.port = port
self.baud = baud
def openconn(self):
self.ser = serial.Serial(port, baud)
async def readport(self):
#gooo= await (self.ser.in_waiting > 0)
read_byte = async self.ser.read(1).decode('ascii')
self.handle_data(read_byte)
print ("42")
def handle_data(self, data):
print(data)
serr=startser(port,baud)
serr.openconn()
loop = asyncio.get_event_loop()
#loop.run_forever(serr.readport())
loop.run_until_complete(serr.readport())
loop.close()
print ("finitto")
#with serial.Serial('COM9', 115200, timeout=1) as …Run Code Online (Sandbox Code Playgroud) AVR MCU(Arduino)会记住nointerrupts()部分中发生的所有中断吗?
void f1() {
noInterrupts();
// critical, time-sensitive code here
interrupts();
}
//now jump to queued interrupts if any
Run Code Online (Sandbox Code Playgroud)
它会在之后执行interrupts()吗?
我问这个是因为在阅读了数据表之后,我觉得所有的中断都有它们的标志,所以这可能没问题.但我不是那么经验丰富,我可能会遗漏一些东西,因为其他教程总是模糊地说"不要在那里停留太长时间,因为当时根本不会发生中断".
为什么?
我有一个循环缓冲区,我从I2C中放入一些数据包(只要发生I2C中断,它们就被放置).我也偶尔在主循环中读取这个缓冲区,在不可预测的时间允许覆盖.
另外,我在相反的方向上使用相同的缓冲类(但是不同的实例)(I2C然后触发中断和读取).
我的问题是:我想在非中断读/写期间关闭中断,所以我可以确定我不会遇到I2C触发并覆盖当前从正常主循环读取的项目的情况.
我现在有种处理与前和读取后标志的情况,因此中断首先检查的项目是免费的,但我不是这种方法有信心,我想,使其与工作noInterrupts()和interrupts()阅读主循环中.
谢谢.
这是一个简单的事情,我不确定它是否可以在C++中像其他语言一样.事物的行为就像它是一个副本,但不是同一个对象.我希望如果这是结构,或其他一些值类型 - 这将是预期的行为,但对于类,我期望这表现得像我正在看"引用",即 - 与数组中的相同对象.我究竟做错了什么?
// Example program
#include <iostream>
#include <string>
class someclass
{
public:
void setn(int n2);
int n=10;
};
void someclass::setn(int n2){
n=n2;
};
int main()
{
someclass moreofthem[5];
someclass my=moreofthem[1];
std::cout << "start value: " << my.n << " as inital\n"; //10
my.setn(2);
std::cout << "new value: " << my.n << " as expected\n"; //2
std::cout << "value in list: " << moreofthem[1].n << " why?\n"; //10?
}
Run Code Online (Sandbox Code Playgroud) arduino ×1
async-await ×1
avr ×1
c++ ×1
pyserial ×1
python ×1
python-3.5 ×1
reference ×1
websocket ×1