码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • matlab, python串口10ms毫秒 连续发送16进制数组


    matlab, python串口10ms毫秒 连续发送16进制数组

    ref:

    • MATLAB中如何用循环实现精确延时
    • python中串口通信的步骤及实现
    • python实现亚毫秒(微秒)级延时

    sscom上位机

    首先用上位机sscom的定时10ms发送
    在这里插入图片描述

    但实测周期确是16ms左右, 数字填更小也没有用了, 可能和cpu性能有关

    matlab

    clear
    delete(instrfindall);   %关闭串口
    global c;               %全局变量
    c = serial('COM4');   %以默认方式打开串口
    c.BaudRate = 115200;     %设置波特率为110
    set(c, 'TimeOut', 1);   % 设置串口数据最大读写时间,如果超过这个时间,仍读取不到数据,那么则终止读写
    fopen(c);                %打开串口
    
    while 1
    %     fprintf(c,hex2dec(FF)); 
        fwrite(c,[255 2 144 0 36 189 201 220 59 105 39 101 59 28 217 86 63 192 194 16 186 192 74 184 55 181 111 225 185 241 49 24 61 110 134 130 189 108 101 29 193 0 0 3]);
    %     pause(0.01);
    %     tic;
        for t = 0.001:0.001:0.01
            while toc < t
            end
        end
    end
    fclose(c);  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    最后一段代码可以实现10ms左右的延时, 本身程序执行也要耗费一些时间, 不会完全精确到10ms, 如果用pause(0.01)函数做延时的话, 周期降到16ms左右就不能再降了

    python

    import serial#导入串口通信库
    import time
    from time import sleep
    
    ser = serial.Serial()
    
    def port_open_recv():#对串口的参数进行配置
        ser.port='com4'
        ser.baudrate=115200
        ser.bytesize=8
        ser.stopbits=1
        ser.parity="E"#奇偶校验位
        ser.open()
        if(ser.isOpen()):
            print("串口打开成功!")
        else:
            print("串口打开失败!")
    #isOpen()函数来查看串口的开闭状态
    
    def port_close():
        ser.close()
        if(ser.isOpen()):
            print("串口关闭失败!")
        else:
            print("串口关闭成功!")
    
    if __name__ == '__main__':
        port_open_recv()
        while True:
            a = "FF 02 90 00 24 bd c9 dc 3b 69 27 65 3B 1C D9 56 3F C0 C2 10 BA C0 4A B8 37 B5 6F E1 B9 F1 31 18 3D 6E 86 82 BD 6C 65 1D C1 00 00 03"
            # a = "aacc"
            # send(a)
            ser.write(bytes.fromhex(a))#编码
            # sleep(0.005)#起到一个延时的效果,这里如果不加上一个while True,程序执行一次就自动跳出了
                # 毫秒延时
            delay_mark = time.time()    
            while True:
                offset = time.time() - delay_mark
                if offset > 0.0095:
                    break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    最后一段代码可以实现10ms的延时, 本身程序执行也要耗费一些时间, 不会完全精确到10ms, 如果用sleep(0.01)函数做延时的话, 周期降到16ms左右就不能再降了

  • 相关阅读:
    Reflect 对象的创建目的
    springboot基于WEB的高校文档打印系统毕业设计源码101004
    java计算机毕业设计基于springboot+vue+elementUI的实验室管理系统(前后端分离)
    excel公式怎么完全复制到另一列?
    数据库计算机三级等级考试--数据库技术相关知识点和笔记
    超级实用的电脑小技巧大全
    【Spark NLP】第 14 章:搜索引擎
    大白话 kafka 架构原理
    用译码器来设计组合逻辑电路
    filter - 常用滤镜效果(毛玻璃、图片阴影、图片褪色)
  • 原文地址:https://blog.csdn.net/weixin_46143152/article/details/126192199
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号