社区
数据库及相关技术
帖子详情
怎么写一个10bit颜色的测试软件
hyz_cs
2014-05-19 11:07:36
当然首先显卡和显示器都是10bit颜色的.
比要R,G,B分别显示从0-1023的渐变色条.但是现在软件中颜色最多也就32bit,rgb各8bit.要怎样才能显示10bit的颜色呢?
...全文
935
5
打赏
收藏
怎么写一个10bit颜色的测试软件
当然首先显卡和显示器都是10bit颜色的. 比要R,G,B分别显示从0-1023的渐变色条.但是现在软件中颜色最多也就32bit,rgb各8bit.要怎样才能显示10bit的颜色呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我喝多了
2014-09-21
打赏
举报
回复
要是一个像素是10位的, 那简单啊
我喝多了
2014-09-21
打赏
举报
回复
你要RGB各是10位的啊, 那怎么可能, 微软都不支持
hyz_cs
2014-09-21
打赏
举报
回复
引用 3 楼 woheduole 的回复:
你要RGB各是10位的啊, 那怎么可能, 微软都不支持
当然是RGB各10bit,那那些10bit显卡,显示器是怎么实现的,绕过操作系统?
lhy
2014-05-20
打赏
举报
回复
系统会提供相关接口吧,看看相关帮助文件。
ModbusPoll9助手 调试必备 带密钥有32
bit
和64
bit
1、支持的协议变体: Modbus RTU Modbus ASCII Modbus TCP / IP 通过TCP / IP的Modbus RTU TCP / IP上的Modbus ASCII Modbus UDP / IP UDP / IP上的Modbus RTU UDP / IP上的Modbus ASCII 2、MODBUS POLL技术事实和特点: OLE自动化,可使用宏语言VBA轻松连接到Excel 读/
写
最多125个寄存器 读/
写
多达2000个输入/线圈 测试中心(编
写
您自己的测试字符串) 打印和打印预览 监控串行数据流量 数据记录到文本文件 数据直接记录到Excel 上下文相关帮助 28显示格式,例如浮点,双精度等。 可调地址基(0或1) 字体和选择 有条件的
颜色
选择 缩放比例 广播(从站ID 0) 使用RTS拨动开关轻松控制RS-485转换器 ENRON / DANIEL模式 6位数字的地址 实时图表 3、支持的Modbus功能: 01:读取线圈状态 02:读取输入状态 03:读取保持寄存器 04:读取输入寄存器 05:强制单线圈 06:预设单寄存器 15:强制多个线圈 16:预设多个寄存器 17:报告从站ID 22:掩码
写
寄存器 23:读/
写
寄存器
开源一STM32项目,CAN,UART,Input检测 原创相对高效性能与代码重用平衡思路,可直接做工程模板
1、CAN收发队列 使用内存FIFO缓冲CAN帧,适合大数据量通信;并使用内部软中断处理CAN数据,相当于事件响应,综合应该比查询方式节省不少时间,也应该比OS调度省点时间。Can.C:底层处理,Communi.C:与应用层高相关。 应用层处理流程用函数指针表的方式调用减少代码量及阅读整齐;实现CAN各种错误记录机制。已初步测试,该机制可用。 CAN处理流程: 接收:CAN1_RX0_IRQHandler_Name (void), CAN1_RX1_IRQHandler(void) 接收中断,CAN_QueueWriteQuick()将当前的有效报文压入内存FIFO,压入的数据为整个CAN邮箱数据,所以后续的处理函数可以分辨出完整的数据。 void CAN1_RX0_IRQHandler_Name (void) // CAN1_RX0_IRQHandler_Name { /* FIFO从空状态开始,在接收到第
一个
有效的报文后,FIFO状态变为挂号_1(pending_1), 硬件相应地把CAN_RFR寄存器的FMP[1:0]设置为’01’(二进制01b)。 软件可以读取FIFO输出邮箱来读出邮箱中的报文,然后通过对CAN_RFR寄存器的RFOM位 设置’1’来释放邮箱,这样FIFO又变为空状态了。如果在释放邮箱的同时, 又收到了
一个
有效的报文,那么FIFO仍然保留在挂号_1状态,软件可以读取FIFO 输出邮箱来读出新收到的报文。 如果应用程序不释放邮箱,在接收到下
一个
有效的报文后,FIFO状态变为 挂号_2(pending_2),硬件相应地把FMP[1:0]设置为’
10
’(二进制
10
b)。 重复上面的过程,第三个有效的报文把FIFO变为挂号_3状态(FMP[1:0]=11b)。 此时,软件必须对RFOM位设置1来释放邮箱,以便FIFO可以有空间来存放下
一个
有效的 报文;否则,下
一个
有效的报文到来时就会导致
一个
报文的丢失。 */ while (CAN1->RF0R & CAN_RF0R_FMP0) // message pending ? { CAN_QueueWriteQuick(&CanRxQueue;, (T_CanFrame *)&CAN1;->sFIFOMailBox[CAN_FIFO0]); CAN1->RF0R |= CAN_RF0R_RFOM0; // Release FIFO 0 output mailbox #if CAN1_SWI_HANDLE_EN > 0 /* Add by Xsky 2011-06-18 15:48 */ EXTI->SWIER |= CAN1_SWI_EXTI_LINE; /* Add by Xsky 2011-06-18 15:47 */ #endif } } void CAN1_RX1_IRQHandler (void) { while (CAN1->RF1R & CAN_RF1R_FMP1) // message pending ? { CAN_QueueWriteQuick(&CanRxQueue;, (T_CanFrame *)&CAN1;->sFIFOMailBox[CAN_FIFO1]); CAN1->RF1R |= CAN_RF1R_RFOM1; // Release FIFO 1 output mailbox #if CAN1_SWI_HANDLE_EN > 0 /* Add by Xsky 2011-06-18 15:48 */ EXTI->SWIER |= CAN1_SWI_EXTI_LINE; /* Add by Xsky 2011-06-18 15:47 */ #endif } } 接收中断响应后,触发STM32的内部软中断(EXTI->SWIER |= CAN1_SWI_EXTI_LINE;), 实现当CAN硬件中断响应完成后,触发更低优先级的中断去处理内存中的CAN数据队列,如果处理时再发生新的CAN硬件接收中断,则会先响应硬件中断,以减少或不丢失CAN FIFO邮箱数据。处理函数在Communi.C中实现。 发送,CAN_SendFrame(): 发送时如果邮箱有空则直接将数据压入邮箱,否则将数据压入内存发送队列。等待上一次数据发送完成时,在发送中断中提取FIFO发送队列中的下一帧数据并发出。 Communi.C的功能为与应用层相关度较高的函数,如发送应用层帧,记录错误。 CAN1_SWI_Handler (void) 实现CAN接收中断触发的内部软件中断,处理内存FIFO接收的CAN数据(实际编译函数名为:EXTI4_IRQHandler())。 处理过程优化:通过定义顺序的code码,查表调用处理函数列表指针可实现比较整齐并有效率的代码机制。 CAN1_SCE_IRQHandler()实现进行错误记录(g_History.SysErrors.xxx以便于统计CAN错误)及相应处理。 个人认为这种处理方式,近似于OS的多任务,同时减少调度开销,是在可重用性与效率之间的平衡用法。当然这种处理方式,也适合于做为uCOS中的底层驱动文件,已留有CAN_QUE_OS_ENTER_CRITICAL()的宏定义,更改为相应的OS开关中断函数基本即可用于uCOS。 附 CAN总线利用率及最坏时间估算.xls, 根据应用层估计的数据发送频度最大值,自动估计CAN总线上导致的最大延时是否满足应用需求。 2、UART模板 UART DMA/中断处理方式 文件模板,可仅修改头部定义实现完全配置某指定的UART端口,以实现执行效率与代码重用的折中,UART.C,UARTx.H,UARTn.C。 UARTx.H为公共代码文件,#include被包含在UART1.C,、UART2.C、……中(用UARTn.C指代)实现所有的接收、发送的中断处理函数,在UARTn.C中宏定义各中断向量函数名以及各种硬件相关参数,定义接收发送的内存缓冲区长度等。代码实现DMA及中断响处理两种方式,通过宏定义选择编译不同代码,接收使用定时器实现字符超时指示功能,DMA接收时多使用了一级DMA接收专用内存缓冲RxDMABuf,因为DMA只能按地址连续
写
内存。 接收发送均使用内存缓冲区,以尽量避免中断响应时间导致的接收数据丢失问题,以及避免查询等待方式的较低效率。 发送函数:UART1_SendBytes(),UART2_SendBytes(),... 检查接收缓冲区字节数:UART1_RcvdSize() 读取指定的字节数:UART1_ReadBytes() 上层使用方法:循环检测UART1_RcvdSize()是否大于0,大于则进行读取等下一步处理,也可再定义高一级的应用层帧缓冲,以实现应用层的完整帧处理,或者增加
一个
对接收FIFO的预读功能,即读取时对接收FIFO中的帧进行识别,如果不是完整的应用层帧则再等待数ms或者再等待数次,等待失败则超时丢弃本帧,寻找下一帧。当然也可以在中断中增加事件机制,类似CAN中断触发低优先级软件中断,多个串口可在同
一个
软件中断服务中处理。 调试输出DbgPrintf函数,Function.C。 已使用大量连续数据测试该机制收发均可用,UART1~5均可用。使用本方式的考虑是在执行效率与代码重用间的平衡,部分代码使用了ST的库,如初始化时不时间使用不高时,而中断处理则基本是直接操作寄存器。并且均考虑了做为uCOS的接口,直接替换UARTx_ENTER_CRITICALx()、UARTx_EXIT_CRITICALx()函数应该可以基本实现做为uCOS的底层驱动。 注:包含UARTx.H的方式,各个UARTn.C文件重用其中代码, 某些情况下编译器可能会编译出错误的问题,具体原因还不明。但方法确实是可行的,已测试STM32F
10
3VCT6 UART1~5均可。 3、用逻辑分析仪测定过的延时函数:Delay.C,内核72MHz,具体延时时间已注释标注. 如: void Delay_Nms(unsigned long N) { long count;//=14200; while(N) { count = 7998; /* 逻辑分析仪测试, 包含引脚取反时间 14200, 80ms: 142.026ms,
10
000, 80ms:
10
0.025ms 8000, 80ms: 80.25ms 7975, 80ms: 79.775ms 7990,
10
0ms: 99.907ms 7998, 150ms: 150.01ms 7997, 150ms: 149.992ms */ while(count--); /* while(count--); 0x08001236 000A MOVS r2,r1 0x08001238 F1A
10
301 SUB r3,r1,#0x01 0x0800123C 4619 MOV r1,r3 0x0800123E D1FA BNE 0x08001236 */ N--; } } 4、输入检测 中断定时进行输入扫描,定义有效无效电平消抖时间,且定义按下弹起事件响应函数指针,应该会比循环扫描节省很多时间IOInput.C。已测试,机制完好。 // 常量表定义 typedef void t_IOIN_EVENT_DO(T_IOEvent); typedef uint8 t_IOIN_Counter; typedef struct t_IOIN_INFO_ { uint8 ID; // 输入信号索引 T_ValidVoltage ValidVoltage; // 有效电平,高电平或者低电平有效 __IO uint32_t *IDR; // 输入引脚指针 uint32_t Pin
Bit
Msk; // 输入引脚位掩码 t_IOIN_Counter CntValid; // 有效状态计数, 注意如果改变ValidVoltage, 此相应需要修改此参数,为确认该电平输入为有效电平的计数值,相当于滤波参数 t_IOIN_Counter CntInvalid; // 无效状态计数, 注意如果改变ValidVoltage, 此相应需要修改此参数,为确认该电平输入为无效电平的计数值,相当于滤波参数 t_IOIN_EVENT_DO *EventHandler; // 执行函数指针 }t_IOIN_INFO; static const t_IOIN_INFO IOIN_InfoTbl[IOIN_NUMS] = { // index, ValidVol, GPIO->IDR, IO_MASK, CNT, CNT~, EventHandler {IOIN_Key1, VOL_Low, &GPIOB;->IDR,
BIT
( 0), 4, 4, NULL }, {IOIN_Key2, VOL_Low, &GPIOB;->IDR,
BIT
( 1), 4, 4, NULL }, {IOIN_Key3, VOL_Low, &GPIOB;->IDR,
BIT
( 6), 4, 4, NULL }, {IOIN_Key4, VOL_Low, &GPIOB;->IDR,
BIT
( 7), 4, 4, KeyESC_Event }, {IOIN_CenterSensor, VOL_High, &GPIOC;->IDR,
BIT
( 7),
10
,
10
, ColorSensorEvent }, // 使其常态电平5ms推迟于
颜色
检测线(以检测), 有效电平2ms提早于
颜色
线 {IOIN_VacuumHousing,VOL_Low, &GPIOE;->IDR,
BIT
(12), 4,
10
, NULL }, {IOIN_BallCounter, VOL_Low, &GPIOE;->IDR,
BIT
(15), 4, 4, NULL }, {IOIN_Spin, VOL_Low, &GPIOE;->IDR,
BIT
(14), 3, 3, NULL }, {IOIN_ColorRed, VOL_Low, &GPIOD;->IDR,
BIT
( 8),16, 6, NULL }, // 使常态电平3ms提前于庶断传感器, 有效电平8ms推迟于遮断传感器 {IOIN_ColorGreen, VOL_Low, &GPIOD;->IDR,
BIT
( 9),16, 6, NULL }, {IOIN_ColorBlue, VOL_Low, &GPIOD;->IDR,
BIT
(
10
),16, 6, NULL } }; 使用时主要修改以上这张表的指向及消科参数,并且对中断处理函数中的顺序或者扫描的最小间隔进行区分即可。 5、
颜色
传感器驱动
颜色
传感器TCS3200D驱动ColorSensor.C。已测试,机制完好。测量频率范围 20Hz~120KHz, S0:S1:HL。 6、铁电驱动 SPI方式读
写
铁电,实现片
写
片读函数Spi_FRAM.C;参数及历史记录读
写
检测函数GameParam.C。 7、其它一些可参考的模板、文件、函数、或者小的方式方法等。 by Xsky 原创STM32项目处理方法(其中个别有文件为直接用的,已注明,如周立功的)。 仅供参考交流,QQ:1821587421 其它可交流方案: GPS车辆监控系统:终端原理图PCB源码整套(稳定成熟可接多个外设);平台整套源码。 LED屏:公交,出租等 原理图PCB;PC端软件等;PDA控制LED屏程序源码。 DVR:小型SD卡录像方案,可485拍照。 公交报站器,原理图PCB;PC端软件。51版,STM32版。 汽车电动台阶驱动板原理图PCB。 PDA扫描轮:条形码扫描,GPRS上传;终端原理图PCB源码整套,服务端源码 手持公交售票终端源码,可打印小票。终端价位特低。 稳定使用的固态继电器原理及PCB(光耦隔离控制双向可控硅)。 直流电机驱动板。
Docker虚拟化容器
一、Docker解决了什么问题? 一款产品从开发到上线,从操作系统,到环境运行,在到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司不得不面对的问题,特别是各版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。 Docker对此给出了
一个
标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重来一次,费力费时。那么软件可以不可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题。 传统上认为,软件编码开发/测试结束后,所产出的成果就是程序或是能够编译执行的二进制字节码等。而为了让这些程序可以顺利执行,开发团队也得准备完善的部署文件,让运维团队得以部署应用程序,开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,仍然经常发生部署失败的情况。Docker镜像的设计,使得Docker得以打破过去【程序即应用】的观念。透过镜像(image)将作业系统核心除外,运作应用程序所需要的系统环境,由上而下打包,达到应用程序快平台的无法接轨运作。 二、Docker是个啥 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any APP,Anywhere”,也就是通过对应组件的封装、分发、部署、运行等生命周期的管理,是用户的App及其运行环境能够做到“一次封装,到处运行”。 Linux容器技术的出现就解决了这样
一个
问题,而Docker就是在它的基础上发展过来的。将应用运行的Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机器上就可以一键部署好,大大简化了操作 Docker解决了运行环境和配置软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。 三、虚拟机与Docker 虚拟机就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统,比如在windows系统里运行Linux系统。应用程序对此毫无感知,因为虚拟机看上去就跟真实的系统一样,能够使应用程序,操作系统和硬件三者之间逻辑不变 虚拟机的缺点: 资源占用多 冗余步骤多启动慢 由于虚拟机存在这些缺点,Linux发展出了另一种虚拟化技术:Linux容器(LinuxContainers,缩
写
为LXC)。 Linux容器不是模拟
一个
完整的操作系统,而是对进程进程进行隔离。有了容器就可以将软件运行所需的所有资源打包到
一个
隔离的容器中。容器与虚拟机不同,不需要捆包一整套操作系统,只需要软件工程所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一的工作。 比较了Docker和传统虚拟机方式的不同之处: 传统虚拟机技术是虚拟机出一套硬件后,在其上运行
一个
完整操作系统,在该系统上在运行所需应用进程; 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。每个容器之间相互隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算字资源。 四、开发/运维(DevOps) 更快速的应用交付和部署 更便捷的升级和扩缩容 更简单的系统运维 更高效的计算资源利用 五、Docker安装 Docker支持一下的CentOS版本: CentOS 7(64-
bit
) CentOS 6.5(64-
bit
)或更高版本 目前,CentOS仅发行版中的内核支持Docker。 Docker运行在CentOS7上,系统内核版本为3.
10
以上 Docker运行在CentOS6.5或更高版本,系统内核版本为2.6.32-431或跟高的版本 使用uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等) 六、Docker的基本组成 Docker镜像(image)就是
一个
只读的模板。镜像可以用来创建Docker容器,
一个
镜像可以创建很多容器。 Docker容器(Container)独立运行的
一个
或一组应用。容器就是镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是
一个
建议的Linux环境和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上层那一层是可读可
写
的。 Docker仓库(Repository)是集中存放镜像文件的场所。仓库和仓库注册服务器是有区别的。仓库注册服务器上往往存放着很多个仓库,每
一个
仓库又包含了多个镜像,每个镜像有不同的的标签(tag)。仓库分为公开仓库和私有仓库两种形式。最大的公开仓库是DockerHub Docker本身是
一个
容器运行载体或称之为管理引擎。我们把应用程序或配置依赖打包好形成
一个
可交付的运行环境,这个打包好的运行环境就似乎image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image文件生成容器的实例。可以生成多个同时运行的容器实例。 七、安装Docker(CentOS7) 参考官网:https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/ 1.卸载旧版本(没有装过可以直接跳过) sudo yum remove docker docker-common docker-selinux docker-engine2. 安装所需的软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23.设置stable镜像仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4.启用edge和testing镜像仓库(可选) sudo yum-config-manager --enable docker-ce-edgesudo yum-config-manager --enable docker-ce-testing5.更新yml的软件索引 sudo yum makecache fast6.安装最新的DockerCE sudo yum install docker-ce7.启动Docker sudo systemctl start docker8.采用阿里云镜像加速(可选) 访问https://dev.aliyun.com/search.html 注册阿里云账号,并登陆 点击进入管理中心,找到镜像加速区 根据阿里云提示修改Docker配置 9.测试安装是否成功,运行HelloWord镜像 sudo docker run hello-world 运行成功!
10
.Docker运行步骤
ModbusSlaveSetup64
Bit
在使用 32 位系统时,创建用于测试或检查 Windows 功能的虚拟从设备。该程序可以加快您的 PLC 编程并实时监控性能或检查兼容性。该接口类似于 Modbus Poll 的接口。 Modbus Slave 是一种软件工具,旨在帮助在工厂装配线或机械等工业环境中工作的人们。借助 Modbus Slave,专家可以通过在 32 个独立窗口中执行和模拟多达 32 个设备来加快他们的 PLC 编程。 该程序包含在
一个
基本界面中,包括
一个
菜单选项卡、
一个
工具栏和
一个
工作区。没有主题或高级自定义选项,虽然菜单导航很容易完成,但有时界面会变得迟缓。 嵌入在 Modbus 从站中的一些最重要的功能表现为串行数据流量监视器、OLE 自动化、打印和预览功能以及多种显示格式。此外,用户可以通过 RTS 开关控制 RS-485 转换器,选择字体和
颜色
,或调整地址库。新手用户可以查阅用户手册以获取有关该程序功能的更多详细信息。 综合考虑,Modbus Slave 是 PLC 编程专家的重要软件解决方案。它的价格是平均的,而且似乎是合理的。
10
bit
显示器
测试软件
,
10
bit
究竟是什么?
10
bit
显示器画质更好?
影音的世界里永远有着数不清的玄学和噱头,各种各样的奇怪概念让人觉得不明觉厉,意志薄弱一些的消费者甚至立刻就要慷慨解囊了。在这些看上去高深莫测,非常唬人的名词里,
10
bit
就是其中之一。我们可以从最简单的黑白两色这个通道说起。从黑色过渡到白色,在8
bit
下我们可以视为中间会经过256个色段,而
10
bit
下这个数字就会增值
10
24个。中间的
颜色
分层越多,我们可以轻易想象,从黑色到白色的渐变过渡就会更加...
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章