码农知识堂 - 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左右就不能再降了

  • 相关阅读:
    Linus Torvalds发布了第一个Linux内核6.4候选版本
    Python爬取网页源代码(自用)
    基于OpenCV的图形分析辨认05
    UE4/UE5像素流送云推流|程序不稳定、弱网画面糊怎么办?
    Spring Boot中Spring MVC的表单标签库与数据绑定讲解与实战(附源码 超详细必看)
    【ArcGIS】利用高程进行坡度分析:区域面/河道坡度
    C语言交通查询系统
    树叶识别系统python+Django网页界面+TensorFlow+算法模型+数据集+图像识别分类
    【面试题】公平锁和非公平锁/可重入锁
    【JavaScript高级进阶】初识类,函数进阶,如何改变this指向
  • 原文地址:https://blog.csdn.net/weixin_46143152/article/details/126192199
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号