LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块
常量
| 常量 | 类型 | 解释 |
|---|---|---|
| lcd.font_opposansm8 | font | 8号字体 |
| lcd.font_unifont_t_symbols | font | 符号字体 |
| lcd.font_open_iconic_weather_6x_t | font | 天气字体 |
| lcd.font_opposansm10 | font | 10号字体 |
| lcd.font_opposansm12 | font | 12号字体 |
| lcd.font_opposansm16 | font | 16号字体 |
| lcd.font_opposansm18 | font | 18号字体 |
| lcd.font_opposansm20 | font | 20号字体 |
| lcd.font_opposansm22 | font | 22号字体 |
| lcd.font_opposansm24 | font | 24号字体 |
| lcd.font_opposansm32 | font | 32号字体 |
| lcd.font_opposansm8_chinese | font | 8号中文字体 |
| lcd.font_opposansm10_chinese | font | 10号中文字体 |
| lcd.font_opposansm12_chinese | font | 12号中文字体 |
| lcd.font_opposansm16_chinese | font | 16号中文字体 |
| lcd.font_opposansm18_chinese | font | 18号中文字体 |
| lcd.font_opposansm20_chinese | font | 20号中文字体 |
| lcd.font_opposansm22_chinese | font | 22号中文字体 |
| lcd.font_opposansm24_chinese | font | 24号中文字体 |
| lcd.font_opposansm32_chinese | font | 32号中文字体 |
lcd.init(tp, args)
lcd显示屏初始化
参数
| 传入值类型 | 解释 |
|---|---|
| string | lcd类型,当前支持: |
| table | 附加参数,与具体设备有关: |
| userdata | spi设备,当port = “device”时有效 |
返回值
无
例子
-- 初始化spi0的st7735s 注意:lcd初始化之前需要先初始化spi
spi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)
log.info("lcd.init",
lcd.init("st7735s",{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
lcd.close()
关闭lcd显示屏
参数
无
返回值
无
例子
-- 关闭lcd lcd.close()
lcd.on()
开启lcd显示屏背光
参数
无
返回值
无
例子
-- 开启lcd显示屏背光 lcd.on()
lcd.off()
关闭lcd显示屏背光
参数
无
返回值
无
例子
-- 关闭lcd显示屏背光 lcd.off()
lcd.sleep()
lcd睡眠
参数
无
返回值
无
例子
-- lcd睡眠 lcd.sleep()
lcd.wakeup()
lcd唤醒
参数
无
返回值
无
例子
-- lcd唤醒 lcd.wakeup()
lcd.invon()
lcd反显
参数
无
返回值
无
例子
-- lcd反显 lcd.invon()
lcd.invoff()
lcd反显关闭
参数
无
返回值
无
例子
-- lcd反显关闭 lcd.invoff()
lcd.cmd(cmd)
lcd命令
参数
| 传入值类型 | 解释 |
|---|---|
| int | cmd |
返回值
无
例子
-- lcd命令 lcd.cmd(0x21)
lcd.data(data)
lcd数据
参数
| 传入值类型 | 解释 |
|---|---|
| int | data |
返回值
无
例子
-- lcd数据 lcd.data(0x21)
lcd.setColor(back,fore)
lcd颜色设置
参数
| 传入值类型 | 解释 |
|---|---|
| int | 背景色 |
| int | 前景色 |
返回值
无
例子
-- lcd颜色设置 lcd.setColor(0xFFFF,0x0000)
lcd.draw(x1, y1, x2, y2,color)
lcd颜色填充
参数
| 传入值类型 | 解释 |
|---|---|
| int | 左上边缘的X位置. |
| int | 左上边缘的Y位置. |
| int | 右下边缘的X位置. |
| int | 右下边缘的Y位置. |
| string | 字符串或zbuff对象 |
返回值
无
例子
-- lcd颜色填充
local buff = zbuff.create({201,1,16},0x001F)
lcd.draw(20,30,220,30,buff)
lcd.clear(color)
lcd清屏
参数
| 传入值类型 | 解释 |
|---|---|
| int | 屏幕颜色 可选参数,默认背景色 |
返回值
无
例子
-- lcd清屏 lcd.clear()
lcd.fill(x1, y1, x2, y2,color)
lcd颜色填充
参数
| 传入值类型 | 解释 |
|---|---|
| int | 左上边缘的X位置. |
| int | 左上边缘的Y位置. |
| int | 右下边缘的X位置,不含 |
| int | 右下边缘的Y位置,不含 |
| int | 绘画颜色 可选参数,默认背景色 |
返回值
无
例子
-- lcd颜色填充 lcd.fill(20,30,220,30,0x0000)
lcd.drawPoint(x0,y0,color)
画一个点.
参数
| 传入值类型 | 解释 |
|---|---|
| int | 点的X位置. |
| int | 点的Y位置. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawPoint(20,30,0x001F)
lcd.drawLine(x0,y0,x1,y1,color)
在两点之间画一条线.
参数
| 传入值类型 | 解释 |
|---|---|
| int | 第一个点的X位置. |
| int | 第一个点的Y位置. |
| int | 第二个点的X位置. |
| int | 第二个点的Y位置. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawLine(20,30,220,30,0x001F)
lcd.drawRectangle(x0,y0,x1,y1,color)
从x / y位置(左上边缘)开始绘制一个框
参数
| 传入值类型 | 解释 |
|---|---|
| int | 左上边缘的X位置. |
| int | 左上边缘的Y位置. |
| int | 右下边缘的X位置. |
| int | 右下边缘的Y位置. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawRectangle(20,40,220,80,0x001F)
lcd.drawCircle(x0,y0,r,color)
从x / y位置(圆心)开始绘制一个圆
参数
| 传入值类型 | 解释 |
|---|---|
| int | 圆心的X位置. |
| int | 圆心的Y位置. |
| int | 半径. |
| int | 绘画颜色 可选参数,默认前景色 |
返回值
无
例子
lcd.drawCircle(120,120,20,0x001F)
lcd.drawQrcode(x, y, str, size)
缓冲区绘制QRCode
参数
| 传入值类型 | 解释 |
|---|---|
| int | x坐标 |
| int | y坐标 |
| string | 二维码的内容 |
| int | 显示大小 (注意:二维码生成大小与要显示内容和纠错等级有关,生成版本为1-40(对应 21x21 - 177x177)的不定大小,如果和设置大小不同会自动在指定的区域中间显示二维码,如二维码未显示请查看日志提示) |
返回值
| 返回值类型 | 解释 |
|---|---|
| nil | 无返回值 |
例子
无
lcd.setFont(font)
设置字体
参数
| 传入值类型 | 解释 |
|---|---|
| int | font lcd.font_XXX 请查阅常量表 |
返回值
无
例子
-- 设置为字体,对之后的drawStr有效,调用lcd.drawStr前一定要先设置-- 若提示 "only font pointer is allow" , 则代表当前固件不含对应字体, 可使用云编译服务免费定制 -- 云编译文档: https://wiki.luatos.com/develop/compile/Cloud_compilation.html-- lcd库的默认字体均以 lcd.font_ 开头 lcd.setFont(lcd.font_opposansm12) lcd.drawStr(40,10,"drawStr") sys.wait(2000) lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表 lcd.drawStr(40,40,"drawStr测试")
lcd.drawStr(x,y,str,fg_color)
显示字符串
参数
| 传入值类型 | 解释 |
|---|---|
| int | x 横坐标 |
| int | y 竖坐标 注意:此(x,y)为左下起始坐标 |
| string | str 文件内容 |
| int | fg_color str颜色 注意:此参数可选,如不填写则使用之前设置的颜色,绘制只会绘制字体部分,背景需要自己清除 |
返回值
无
例子
-- 显示之前先设置为中文字体,对之后的drawStr有效 lcd.setFont(lcd.font_opposansm12) lcd.drawStr(40,10,"drawStr") sys.wait(2000) lcd.setFont(lcd.font_opposansm16_chinese) lcd.drawStr(40,40,"drawStr测试")
lcd.drawGtfontGb2312(str,size,x,y)
使用gtfont显示gb2312字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
-- 注意, gtfont是额外的字体芯片硬件, 需要外挂在SPI总线才能调用本函数的
lcd.drawGtfontGb2312("啊啊啊",32,0,0)
lcd.drawGtfontGb2312Gray(str,size,gray,x,y)
使用gtfont灰度显示gb2312字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | gray 灰度[1阶/2阶/3阶/4阶] |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
-- 注意, gtfont是额外的字体芯片硬件, 需要外挂在SPI总线才能调用本函数的
lcd.drawGtfontGb2312Gray("啊啊啊",32,4,0,40)
lcd.drawGtfontUtf8(str,size,x,y)
使用gtfont显示UTF8字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
lcd.drawGtfontUtf8("啊啊啊",32,0,0)
lcd.drawGtfontUtf8Gray(str,size,gray,x,y)
使用gtfont灰度显示UTF8字符串
参数
| 传入值类型 | 解释 |
|---|---|
| string | str 显示字符串 |
| int | size 字体大小 (支持16-192号大小字体) |
| int | gray 灰度[1阶/2阶/3阶/4阶] |
| int | x 横坐标 |
| int | y 竖坐标 |
返回值
无
例子
lcd.drawGtfontUtf8Gray("啊啊啊",32,4,0,40)
lcd.getSize()
获取屏幕尺寸
参数
无
返回值
| 返回值类型 | 解释 |
|---|---|
| int | 宽, 如果未初始化会返回0 |
| int | 高, 如果未初始化会返回0 |
例子
log.info("lcd", "size", lcd.getSize())
lcd.drawXbm(x, y, w, h, data)
绘制位图
参数
| 传入值类型 | 解释 |
|---|---|
| int | X坐标 |
| int | y坐标 |
| int | 位图宽 |
| int | 位图高 |
| int | 位图数据,每一位代表一个像素 |
返回值
无
例子
-- 取模使用PCtoLCD2002软件即可 阴码 逐行 逆向 -- 在(0,0)为左上角,绘制 16x16 "今" 的位图 lcd.drawXbm(0, 0, 16,16, string.char(0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00 ))
lcd.showImage(x, y, file)
显示图片,当前只支持jpg,jpeg
参数
| 传入值类型 | 解释 |
|---|---|
| int | X坐标 |
| int | y坐标 |
| string | 文件路径 |
返回值
无
例子
lcd.showImage(0,0,"/luadb/logo.jpg")
lcd.flush()
主动刷新数据到界面, 仅设置buff且禁用自动属性后使用
参数
无
返回值
| 返回值类型 | 解释 |
|---|---|
| bool | 成功返回true, 否则返回nil/false |
例子
无
lcd.setupBuff(conf, onheap)
设置显示缓冲区, 所需内存大小为 2×宽×高 字节. 请衡量内存需求与业务所需的刷新频次.
参数
| 传入值类型 | 解释 |
|---|---|
| userdata | conf指针, 不需要传 |
| bool | true使用heap内存, false使用vm内存, 默认使用vm内存, 不需要主动传 |
返回值
| 返回值类型 | 解释 |
|---|---|
| bool | 是否成功 |
例子
-- 初始化lcd的buff缓冲区, 可理解为FrameBuffer区域. lcd.setupBuff()
lcd.autoFlush(enable)
设置自动刷新, 需配合lcd.setupBuff使用
参数
| 传入值类型 | 解释 |
|---|---|
| bool | 是否自动刷新,默认为true |
返回值
无
例子
-- 设置buff 并禁用自动更新 lcd.setupBuff() lcd.autoFlush(false) -- 禁止自动更新后, 需要使用 lcd.flush() 主动刷新数据到屏幕
lcd.rgb565(r, g, b, swap)
RGB565颜色生成
参数
| 传入值类型 | 解释 |
|---|---|
| int | 红色, 0x00 ~ 0xFF |
| int | 绿色, 0x00 ~ 0xFF |
| int | 蓝色, 0x00 ~ 0xFF |
| bool | 是否翻转, true 翻转, false 不翻转. 默认翻转 |
返回值
| 返回值类型 | 解释 |
|---|---|
| int | 颜色值 |
例子
-- 本API支持多种模式, 参数数量分别是 1, 2, 3, 4 -- 1. 单参数形式, 24bit RGB值, swap = true, 推荐 local red = lcd.rgb565(0xFF0000) local green = lcd.rgb565(0x00FF00) local blue = lcd.rgb565(0x0000FF)-- 2. 两参数形式, 24bit RGB值, 增加swap的设置 local red = lcd.rgb565(0xFF0000, true) local green = lcd.rgb565(0x00FF00, true) local blue = lcd.rgb565(0x0000FF, true)-- 3. 三参数形式, 红/绿/蓝, 各8bit local red = lcd.rgb565(0xFF, 0x00, 0x00) local green = lcd.rgb565(0x00, 0xFF, 0x00) local blue = lcd.rgb565(0x00, 0x00, 0xFF)-- 4. 四参数形式, 红/绿/蓝, 各8bit, 增加swap的设置 local red = lcd.rgb565(0xFF, 0x00, 0x00, true) local green = lcd.rgb565(0x00, 0xFF, 0x00, true) local blue = lcd.rgb565(0x00, 0x00, 0xFF, true)
相关文章:
LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块
常量 常量 类型 解释 lcd.font_opposansm8 font 8号字体 lcd.font_unifont_t_symbols font 符号字体 lcd.font_open_iconic_weather_6x_t font 天气字体 lcd.font_opposansm10 font 10号字体 lcd.font_opposansm12 font 12号字体 lcd.font_opposansm16 font…...
敏捷是怎么提高工作效率的
敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…...
【C++】哈希的应用 -- 布隆过滤器
文章目录 一、布隆过滤器提出二、布隆过滤器概念三、布隆过滤器哈希函数个数的选择四、布隆过滤器的实现1.布隆过滤器的插入2.布隆过滤器的查找3.布隆过滤器删除4.完整代码实现 五、布隆过滤器总结1.布隆过滤器优点2.布隆过滤器缺陷3.布隆过滤器的应用4.布隆过滤器相关面试题 一…...
如何在Git中修改远程仓库地址
原文(可不登录复制代码):如何在Git中修改远程仓库地址-北的杂货间 Git是广泛使用的分布式版本控制系统,它允许开发者在本地仓库上工作,并将更改上传到远程仓库。然而,有时候你可能需要修改远程仓库的地址&…...
Go语言的sync.Once()函数
sync.Once 是 Go 语言标准库 sync 包提供的一个类型,它用于确保一个函数只会被执行一次,即使在多个 goroutine 中同时调用。 sync.Once 包含一个 Do 方法,其签名如下: func (o *Once) Do(f func()) Do 方法接受一个函数作为参数…...
修改 Stable Diffusion 使 api 接口增加模型参数
参考:https://zhuanlan.zhihu.com/p/644545784 1、修改 modules/api/models.py 中的 StableDiffusionTxt2ImgProcessingAPI 增加模型名称 StableDiffusionTxt2ImgProcessingAPI PydanticModelGenerator("StableDiffusionProcessingTxt2Img",StableDiff…...
微信小程序自定义组件及会议管理与个人中心界面搭建
一、自定义tabs组件 1.1 创建自定义组件 新建一个components文件夹 --> tabs文件夹 --> tabs文件 创建好之后win7 以上的系统会报个错误:提示代码分析错误,已经被其他模块引用,只需要在 在project.config.json文件里添加两行配置 &…...
UiPath:一家由生成式AI驱动的流程自动化软件公司
来源:猛兽财经 作者:猛兽财经 总结: (1)UiPath(PATH)的股价并没有因为生成式AI的炒作而上涨,但很可能会成为主要受益者。 (2)即使在严峻的宏观环境下,UiPath的收入还在不…...
使用AI编写测试用例——详细教程
随着今年chatGPT的大热,每个行业都试图从这项新技术当中获得一些收益我之前也写过一篇测试领域在AI技术中的探索:软件测试中的AI——运用AI编写测试用例现阶段AI还不能完全替代人工测试用例编写,但是如果把AI当做一个提高效率的工具ÿ…...
又哭又笑,这份面试宝典要是早遇到就好了
01、算法原理 选择排序(Selection sort)是一种简单直观的排序算法。 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素&#…...
订单30分钟自动关闭的五种解决方案
1 前言 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务 。那么这里就会产生一个问题,这…...
【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅰ—— 生成 CSR
目录 替换拓扑图证书关系示意图说明 & 关联博文1. 默认证书截图2. 使用 certificate-manager 生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 本系列博文要实现的拓扑是 说明 & 关联博文 因为使用企业 …...
【diffusion model】扩散模型入门
写在最前,参加DataWhale 10月组队学习。 参考资料: HuggingFace 开源diffusion-models-class 1.扩散模型介绍 2.调用模型生成一张赛博风格的猫咪图片 2.1 安装依赖包 %pip install -qq -U diffusers datasets transformers accelerate ftfy pyarrow9…...
[Spring]为什么Spring动态代理默认使用CGlib,而不是JDK代理?
文章目录 原因一:CGlib不需要接口原因二:CGlib效率高原因三:JDK代理会导致注解失效如果希望使用JDK代理扩展AOP in Spring Boot, is it a JDK dynamic proxy or a Cglib dynamic proxy?SpringSpringBoot 原因一:CGlib不需要接口 …...
最长上升子序列(二分)代码模板
用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…...
存储优化知识复习一详细版解析
存储优化 知识复习一 一、 选择题 1、1948 年,____提出了“信息熵”(shāng) 的概念,解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下,LUN是建立在____上。 A、硬盘 B、条带 C、Chun…...
“暂停加息,股市低迷:242只股票创新低,比特币突破2.8万美元后看涨趋势不可挡!“
11 月1日 FOMC 会议 美联储主席杰罗姆鲍威尔周五在纽约发表讲话,毫不意外地,他采取了更加鸽派的立场,因为在不确定的世界中,美国政府的过度杠杆化和可能即将到来的经济衰退已成为共识。 根据鲍威尔对未来加息的最低限度讨论&…...
微信小程序会议OA系统其他页面
前言: 及上一文章:https://blog.csdn.net/djssubddbj/article/details/133895170?spm1001.2014.3001.5501我们所写的会议OA的首页,在这个上面我们继续完成我们的会议OA系统,这是我们的本期所要完成的页面 自定义组件 微信小程序…...
LabVIEW中使用Get LV Class Default Value 出现错误1498
LabVIEW中使用Get LV Class Default Value 出现错误1498 在LabVIEW中开发了一个应用程序,其中包含可以在执行时动态配置插件的基类。生成可执行文件后,当应用程序要执行子类时,收到以下错误信息。 Error1498 occurred at Gen LV Class Defa…...
RabbitMQ中的核心概念和交换机类型
目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含两个部分:消息体和附加消息。 消息体…...
YDFID-1:如何用开源数据集彻底革新纺织行业的AI质检?
YDFID-1:如何用开源数据集彻底革新纺织行业的AI质检? 【免费下载链接】YDFID-1 Yarn-dyed Fabric Image Dataset Version1. From Zhang Hongwei, Artificial Intelligence Research Group, Xi an Polytechnic University. 项目地址: https://gitcode.c…...
Qt桌面应用实战:集成YOLOv8 ONNX模型,实现摄像头/视频文件的实时目标检测与界面显示
Qt桌面应用实战:集成YOLOv8 ONNX模型实现高效目标检测 在智能视觉应用开发领域,如何将前沿的深度学习模型无缝集成到成熟的桌面框架中,是许多开发者面临的现实挑战。本文将深入探讨基于Qt框架构建一个支持实时目标检测的桌面应用,…...
开源实战:用安卓App与微信小程序双端联动,远程操控Arduino智能设备
1. 从零搭建智能灯光控制系统 想象一下这样的场景:下班路上用手机提前打开家里的氛围灯,朋友来访时让他们用微信小程序调节灯光亮度,所有操作都通过你亲手搭建的系统完成。这就是我们要实现的ArduinoESP8266-01双端控制方案,一个…...
掌握 AI 大模型记忆系统:新手程序员必备收藏,轻松构建更智能 Agent 应用
本文深入探讨了 AI Agent 中的记忆系统,阐述了其对于实现上下文连贯性和个性化交互的重要性。文章详细介绍了记忆的定义、分类及各 Agent 框架(如 Google ADK、LangChain、AgentScope)中的实现差异,并解析了短期记忆和长期记忆的交…...
树莓派Zero网络升级指南:低成本搞定RTL8153千兆网卡(附避坑技巧)
树莓派Zero网络性能升级实战:RTL8153千兆网卡配置与优化全攻略 树莓派Zero凭借其小巧的体积和低廉的价格,在物联网、边缘计算等领域广受欢迎。然而,其内置的百兆网络接口往往成为性能瓶颈,尤其是在需要频繁数据传输的场景下。本文…...
从零构建专业级电磁仿真工作流:gprMax实战进阶指南
从零构建专业级电磁仿真工作流:gprMax实战进阶指南 【免费下载链接】gprMax gprMax is open source software that simulates electromagnetic wave propagation using the Finite-Difference Time-Domain (FDTD) method for numerical modelling of Ground Penetra…...
CTFshow MISC 杂项通关:从Zip伪加密到Office隐写的实战解析
1. Zip伪加密破解实战 第一次接触CTF比赛时,遇到Zip伪加密的题目完全摸不着头脑。记得当时花了一整天时间研究各种解压工具,最后才发现原来是个伪加密的套路。Zip伪加密是CTF杂项题目中最基础的考点之一,但也是最容易让人栽跟头的地方。 伪加…...
告别SSH频繁掉线:从原理到实战的保活配置全解析
1. SSH连接为何频繁掉线?先搞懂底层机制 每次用SSH连服务器编译代码,刚泡好咖啡回来就发现连接断了?这可能是所有开发者都经历过的糟心时刻。要彻底解决这个问题,得先明白背后的三大"杀手": TCP层超时是最底…...
Blender 3.6 新手避坑指南:从Maya转过来的我,这样设置软件和快捷键才顺手
Blender 3.6 从Maya迁移的高效配置手册 第一次打开Blender时,那种既熟悉又陌生的感觉让我这个用了五年Maya的老用户有点手足无措。视图旋转方式不同、选择逻辑差异、甚至连最基本的移动操作都让我下意识按错快捷键。经过三个月的实战磨合,我总结出一套让…...
告别GUI点点点:用TCL脚本在ModelSim里实现自动化编译与波形生成
从零构建ModelSim自动化工作流:TCL脚本实战指南 每次修改Verilog代码后,你是否还在重复这些操作:打开ModelSim GUI→创建工程→添加文件→编译→启动仿真→手动添加信号到波形窗口?这种低效的手动操作不仅消耗时间,更会…...
