为什么不把sensor.reset()等方法注释,openmv就不能在串口接收到数据?
-
sending.py import time from pyb import UART uart = UART(3, 115200,timeout_char = 1000) #uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters def sending_data(jj): global uart #j = jj print(jj) uart.write(str(jj)) #发送字符串 def receive_data(): if uart.any(): tmp_data = uart.readline().decode().strip() print(tmp_data) return tmp_data else: return 2 ''' while(True): sending_data(123) receive_data() print(receive_data()) time.sleep(1000) '''
-
不注释的话一直是这样,发送的数据在串行终端 也没有显示
-
如果涉及代码,需要报错提示与全部代码文本,请注意不要贴代码图片
-
-
@kidswong999
一直这样,灯不亮,终端也没有显示收到的数据。当我单独调试串口接收的程序时又能接收到发过来的字符。main.py # Untitled - By: Lee - 周六 2月 23 2019 # Untitled - By: Lee - 周六 1月 26 2019 # 收开始命令 扫码 找色块 测距 发距离 import sensor, image, time,pyb,math from pyb import UART import sending import json from Sao_Ma import ma from Measure import measure_distance sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) #uart = UART(3,115200,timeout_char = 1000) L = 0 i = 0 order = 0 #while True: clock = time.clock() for x in range(2): pyb.LED(3).on() time.sleep(200) pyb.LED(3).off() time.sleep(100) while order == 0: order = sending.receive_data() print(order) #print('ok') #开始执行扫码命令 ''' while(True): clock.tick() img = sensor.snapshot() print(L,p) print(clock.fps()) ''' fan_kui = 0 p = 3 print(p) while fan_kui != 0 and p > 0: fan_kui = ma() #扫码 print(fan_kui) uart.write('fan_kui') #反馈扫码的数字(整数) p -=1 print(p) q = 0 while q < 3: q += 1 N = 11 while N != 11 and N != 12 and N !=13: #当接收到11、12、13时才开始识别色块和测距 N = receive_data() if N % 10 == 1: #红色 L = measure_distance(N) print(L) sending_data(L) #发送距离大小 elif N % 10 == 2: #绿色 L = measure_distance(N) print(L) sending_data(L) elif N % 10 == 3: #蓝色 L = measure_distance(N) print(L) sending_data(L)
Untitled - By: Lee - 周日 2月 3 2019
import time,sensor
from pyb import UARTuart = UART(3, 115200,timeout_char = 1000)
#uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters
clock = time.clock()def sending_data(jj):
global uart
j = str(jj)
print(j)uart.write(j+'\r\n') #发送字符串
def receive_data():
clock.tick()
img = sensor.snapshot()
if uart.any():#如果收到数据
print('OK')
message = uart.readline().decode().strip()
#print(message) #打印数据
return message
if(d=='A'):#如果是A,亮灯
pyb.LED(2).on()
#else:
#return 2'''
while(True):sending_data(233)
receive_data() print(receive_data()) time.sleep(1000)
'''
Measure.py # Untitled - By: Lee - 周五 2月 22 2019 # Single Color RGB565 Blob Tracking Example # # This example shows off single color RGB565 tracking using the OpenMV Cam. import sensor,image,math,time import sending threshold_index = 0 # 0 for red, 1 for green, 2 for blue # Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max) # The below thresholds track in general red/green/blue things. You may wish to tune them... red_thresholds = (36, 66, 14, 72, -6, 60) # generic_red_thresholds #只有红色 green_thresholds = (70, 100, -10, 7, 0, 35) # generic_green_thresholds #只有绿色 blue_thresholds = (34, 50, -17, 22, -40, -10) # generic_blue_thresholds #只有蓝色 #while (True): # View_Color() ''' Measure the distance This example shows off how to measure the distance through the size in imgage This example in particular looks for yellow pingpong ball. For color tracking to work really well you should ideally be in a very, very, very, controlled enviroment where the lighting is constant... yellow_threshold = ( 56, 83, 5, 57, 63, 80) You may need to tweak the above settings for tracking green things... Select an area in the Framebuffer to copy the color settings. ''' sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # use RGB565. sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed. sensor.skip_frames(10) # Let new settings take affect. sensor.set_auto_whitebal(False) # turn this off. clock = time.clock() # Tracks FPS. i = sending.receive_data() K=5000 #the value should be measured 需根据要识别物体来确定初始化比例大小 #实际大小=K*宽的像素 ''' Single Color RGB565 Blob Tracking Example This example shows off single color RGB565 tracking using the OpenMV Cam. 分别给i赋值1,2,3 ''' def R_G_B(j): #寻找最大色块的坐标 if j <= 3: max_size=0 clock.tick() img = sensor.snapshot() if j == 1: blob = img.find_blobs([red_thresholds]) #色块中心的 elif j ==2: blob = img.find_blobs([green_thresholds]) else: blob = img.find_blobs([blue_thresholds]) '''if blob.pixels() > max_size: max_blob = blob max_size = blob.pixels() img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) return max_blob print('sum :', len(blob)) else: return 0 ''' return blob print(clock.fps()) def R_G_B_center(k): m = R_G_B(j) x = blob.cx() y = blob.cy() return x,y #while True: # R_G_B(1) def measure_distance(i): m = i clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. blobs = R_G_B(m) length = 0 if len(blobs) == 1: # Draw a rect around the blob. b = blobs[0] img.draw_rectangle(b[0:4]) # rect img.draw_cross(b[5], b[6]) # cx, cy if abs(b[2]-b[3])>2: #判断是否为球、正方体或其他立方体 Lm = b[3] else: Lm = (b[2]+b[3])/2 length = K/Lm #距离 = k/直径的像素 print(length) return length #print(b[2]) '''while True: clock.tick() ff = measure_distance(1) print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while # connected to your computer. The FPS should increase once disconnected. '''
Sao_Ma.py
'''import sensor, image,timesensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) # can be QVGA on M7...
sensor.skip_frames(30)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
clock = time.clock()def ma():
img = sensor.snapshot()
img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
for code in img.find_qrcodes():
img.draw_rectangle(code.rect(),color = (0,0,0))
numbers = code.payload()
if code.payload() >= '0':
numbers = list(map(int, numbers))
number = 0
number = numbers[0]*100+numbers[1]*10+numbers[2]
return nunmer
#print(number)
else:
return 'fail'
'''二维码例程
这个例子展示了OpenMV Cam使用镜头校正来检测QR码的功能(请参阅qrcodes_with_lens_corr.py脚本以获得更高的性能)。
import sensor, image, time
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
clock = time.clock()def ma():
clock.tick()
img = sensor.snapshot()
img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
for code in img.find_qrcodes():
img.draw_rectangle(code.rect(), color = (255, 0, 0))
print(code)
number = code.payload() #返回二维码有效载荷的字符串
print('payload',number)
return int(number) #整型
print(clock.fps())#while (True):
print(ma())
-
@kidswong999 教程看过很多遍了,但就是不知道为什么导入其他模块就收不了数据了
-
你应该给我一个能复现问题的最短的代码。
这好几个代码,谁都不会给你看的。
-
import sensor, image, time,pyb import sending,Measure sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) clock = time.clock() for x in range(2): pyb.LED(3).on() time.sleep(200) pyb.LED(3).off() time.sleep(100) order = 1 while order == 1: order = sending.receive_data() print(order) print('bbb')
请问为什么我从串口助手发数字1,但openmvIDE不是一直循环接收数据?反而在下面把'bbb'打印了出来
-
我不知道。
你应该把sending.py和Measure.py全部写在一个main文件里面。可以让别人直接复制粘贴代码到IDE就能运行。
复制一堆文件太麻烦。
-
然后把函数也不要,直接操作uart,最终你就会知道uart哪一个函数出问题了。