Ví dụ thời gian sử dụng Micropython

lần - Đây là thời gian truy cập tệp và sửa đổi. Nếu không có thời gian, thì thời gian truy cập tệp và thời gian sửa đổi được đặt thành thời gian hiện tại. Tham số times bao gồm hàng ở dạng [atime, mtime] i. e [thời gian truy cập, thời gian sửa đổi]

lần - Đây là thời gian truy cập tệp và sửa đổi. Nếu không có thời gian, thì thời gian truy cập tệp và thời gian sửa đổi được đặt thành thời gian hiện tại. Tham số times bao gồm hàng ở dạng [atime, mtime] i. e [thời gian truy cập, thời gian sửa đổi]

def accgyromag_update[self]. # gia tốc = pyb. Accel[] # acc_axis_x, acc_axis_y, acc_axis_z = accel. x[], tăng tốc. y[], tăng tốc. z[] đánh dấu = utime. time[] acc_axis_x, acc_axis_y, acc_axis_z = [ urandom. randint[0, 32767] % X_OFFSET, ngẫu nhiên. randint[0, 32767] % Y_OFFSET, ngẫu nhiên. randint[0, 32767] % Z_OFFSET] gyto_axis_x, gyto_axis_y, gyto_axis_z = [ urandom. randint[0, 32767] % X_OFFSET, ngẫu nhiên. randint[0, 32767] % Y_OFFSET, ngẫu nhiên. randint[0, 32767] % Z_OFFSET] mag_axis_x, mag_axis_y, mag_axis_z = [ urandom. randint[0, 32767] % X_OFFSET, ngẫu nhiên. randint[0, 32767] % Y_OFFSET, ngẫu nhiên. randint[0, 32767] % Z_OFFSET] bộ đệm = ustruct. đóng gói[ "
đồng hồ xác định[]. uv = lambda phi. cmath. rect[1, phi] # Trả về vectơ đơn vị của pha phi pi = cmath. pi ngày = ['Thứ hai', 'Thứ ba', 'Thứ tư', 'Thứ năm', 'Thứ sáu', 'Thứ bảy', 'Chủ nhật'] tháng = ['Tháng một', 'Tháng hai', 'Tháng ba', 'Tháng tư' . set_textpos[ssd, 0, 0] # Trong trường hợp các lần kiểm tra trước đó đã thay đổi nó wri = CWriter[ssd, arial10, GREEN, BLACK, verbose=False] wri. set_clip[True, True, False] # Khởi tạo các đối tượng có thể hiển thị dial = Dial[wri, 2, 2, height = 75, ticks = 12, bdcolor=None, label=120, pip=False] # Viền màu fg lbltim = Label . 7j # Độ dài con trỏ và vị trí ở trên cùng mstart = 0 + 0. 92j bắt đầu = 0 + 0. 92j trong khi Đúng. t = thời gian. giờ địa phương[] giờ. value[hstart * uv[-t[3]*pi/6 - t[4]*pi/360], VÀNG] phút. value[mstart * uv[-t[4] * pi/30], VÀNG] giây. giá trị[bắt đầu * uv[-t[5] * pi/30], ĐỎ] lbltim. giá trị['{. 02d}. {. 02d}. {. 02d}'. định dạng[t[3], t[4], t[5]]] quay số. chữ['{} {} {} {}'. format[days[t[6]], t[2], months[t[1] - 1], t[0]]] refresh[ssd] utime. ngủ[1]

Mô-đun utime cung cấp các chức năng để nhận ngày và giờ hiện tại, đo khoảng thời gian và độ trễ

Kỷ nguyên thời gian. Cổng ESP32 của Pycom sử dụng tiêu chuẩn cho kỷ nguyên hệ thống POSIX của 1970-01-01 00:00:00 UTC

Duy trì ngày/thời gian theo lịch thực tế

Điều này yêu cầu Đồng hồ thời gian thực [RTC]. Trên các hệ thống có HĐH cơ bản [bao gồm một số RTOS], RTC có thể ẩn. Cài đặt và duy trì thời gian lịch thực tế là trách nhiệm của OS/RTOS và được thực hiện bên ngoài MicroPython, nó chỉ sử dụng API OS để truy vấn ngày/giờ. Tuy nhiên, trên các cổng baremetal, thời gian hệ thống phụ thuộc vào đối tượng machine.RTC[]. Thời gian lịch hiện tại có thể được đặt bằng chức năng machine.RTC[].datetime[tuple] và được duy trì bằng các phương tiện sau

  • Bằng pin dự phòng [có thể là thành phần bổ sung, tùy chọn cho một bo mạch cụ thể]
  • Sử dụng giao thức thời gian được nối mạng [yêu cầu thiết lập bởi một cổng/người dùng]
  • Người dùng đặt thủ công trên mỗi lần bật nguồn [nhiều bảng sau đó duy trì thời gian RTC qua các lần đặt lại cứng, mặc dù một số bảng có thể yêu cầu cài đặt lại trong trường hợp đó]

Nếu thời gian lịch thực tế không được duy trì với hệ thống/MicroPython RTC, các chức năng bên dưới yêu cầu tham chiếu đến thời gian tuyệt đối hiện tại có thể hoạt động không như mong đợi

phương pháp

Chuyển đổi thời gian được biểu thị bằng giây kể từ Kỷ nguyên [xem bên trên] thành 8-Tuple chứa. [year, month, mday, hour, minute, second, weekday, yearday] Nếu không cung cấp secs thì thời gian hiện tại từ RTC sẽ được sử dụng

  • year bao gồm cả thế kỷ [ví dụ 2014]
  • month là 1-12
  • mday là 1-31
  • utime0 là 0-23
  • utime1 là 0-59
  • utime2 là 0-59
  • utime3 là 0-6 cho Thứ Hai-Chủ Nhật
  • utime4 là 1-366

Giống như utime5 nhưng chuyển đổi sang giờ địa phương. Nếu không cung cấp secs, thời gian hiện tại từ RTC sẽ được sử dụng

Đây là hàm nghịch đảo của utime7. Đối số của nó là một bộ 8 đầy đủ thể hiện thời gian theo utime7. Nó trả về một số nguyên là số giây kể từ 1970-01-01 00:00:00 UTC

Ngủ cho số lượng nhất định của 1970-01-01 00:00:00 UTC0. 1970-01-01 00:00:00 UTC0 có thể là một số dấu phẩy động để ngủ trong một số giây nhỏ. Lưu ý rằng các cổng MicroPython khác có thể không chấp nhận đối số dấu phẩy động, để tương thích với chúng, hãy sử dụng các hàm 1970-01-01 00:00:00 UTC2 và 1970-01-01 00:00:00 UTC3

Độ trễ cho số mili giây đã cho, phải là số dương hoặc 0

Độ trễ cho số micro giây nhất định, phải là số dương hoặc 0

Trả về thời gian hoạt động, tính bằng mili giây

Giống như 1970-01-01 00:00:00 UTC4 ở trên, nhưng tính bằng micro giây

Tương tự như 1970-01-01 00:00:00 UTC5, nhưng nhanh hơn

Đo khoảng thời gian giữa các cuộc gọi liên tiếp đến 1970-01-01 00:00:00 UTC6, 1970-01-01 00:00:00 UTC7 hoặc 1970-01-01 00:00:00 UTC8. Giá trị do các hàm này trả về có thể bao quanh bất kỳ lúc nào, do đó, việc trừ trực tiếp chúng không được hỗ trợ. 1970-01-01 00:00:00 UTC9 nên được sử dụng thay thế. Giá trị "cũ" thực sự phải đi trước giá trị "mới" đúng lúc, nếu không kết quả sẽ không được xác định. Không nên sử dụng hàm này để đo các khoảng thời gian dài tùy ý [vì các hàm machine.RTC[]0 bao quanh và thường sẽ có khoảng thời gian ngắn]. Mẫu sử dụng dự kiến ​​đang triển khai tính năng bỏ phiếu theo sự kiện khi hết thời gian chờ


# Wait for GPIO pin to be asserted, but at most 500us
start = time.ticks_us[]
while pin.value[] == 0:
    if time.ticks_diff[time.ticks_us[], start] > 500:
        raise TimeoutError

Trả về số giây, dưới dạng số nguyên, kể từ Epoch, giả sử rằng RTC bên dưới được đặt. Nếu RTC không được đặt, chức năng này sẽ trả về số giây kể từ khi bật hoặc đặt lại nguồn]. Nếu bạn muốn phát triển ứng dụng MicroPython di động, bạn không nên dựa vào chức năng này để cung cấp độ chính xác cao hơn giây. Nếu bạn cần độ chính xác cao hơn, hãy sử dụng các hàm 1970-01-01 00:00:00 UTC6 và 1970-01-01 00:00:00 UTC7, nếu bạn cần thời gian theo lịch, thì machine.RTC[]3 không có đối số là lựa chọn tốt hơn

Đặt hoặc lấy phần bù múi giờ, tính bằng giây. Nếu secs không được cung cấp, nó sẽ trả về giá trị hiện tại

Trong MicroPython, machine.RTC[]5 hoạt động ngược lại với Python. Trong , để lấy giờ địa phương, bạn viết machine.RTC[]6, trong khi ở MicroPython là machine.RTC[]7

Chủ Đề