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

  • 相关阅读:
    基于51单片机的高精度可调数控稳压电源Proteus仿真
    网络安全的发展方向是什么?网络安全学什么内容
    7-Spring架构源码分析-IoC 之注册 BeanDefinitions
    Make命令与MakeFile的编写学习
    软件测试面试丨关于JMeter的问题,看这篇就够了
    关系型数据库之MySQL8——由内而外的深化全面学习
    基于布谷鸟优化的BP神经网络(预测应用) - 附代码
    如何指定网站内搜索关键字(借用已有搜索引擎)
    2327. 知道秘密的人数;1722. 执行交换操作后的最小汉明距离;2537. 统计好子数组的数目
    网络安全(黑客)自学
  • 原文地址: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号