矮胖PNG 该库可以读取和写入PNG文件。 它是用纯Ruby编写的,以实现最大的可移植性。 我再说一遍:它不需要RMagick或任何其他内存泄漏图像库。 特征 解码PNG标准允许的任何图像。 这包括所有标准颜色模式,所有位深度,所有透明度以及隔行扫描和过滤选项。 编码图像支持所有这些颜色模式的所有颜色模式(真彩色,灰度和索引)和透明度。 根据使用的颜色数量,将自动选择最佳颜色模式。 读/写访问图像的像素。 对存储在块中的所有图像元数据进行R / W访问。 内存效率高(使用Fixnum,即每个像素使用4或8字节的内存,具体取决于硬件) 通过仅使用整数数学和高度优化的保存例程,可以快速地达到Ruby标准。 适用于当前支持的每个Ruby版本(2.5及更高版本) 如果确实需要,可以与RMagick进行互操作。 另外,请查看 ,它是一个mixin模块,该模块在C语言中实现了一些Ch
2022-02-03 21:20:28 470KB png rdoc png-decoder png-encoder
1
stm32F103 SPI软硬件读取max31865温度支持shell功能
2022-02-03 19:05:55 6.7MB stm32 shell max31865
1
STC15F2K60S2单片机读写ADS1256并LCD1602显示驱动程序源码,可以做为你的学习设计参考。 void main() { signed long Adc; float Volts; DelayMs(50); ADS1256_Init(); //ADS1256 参数初始化 LCD_Init(); while(1) { Adc = ADS1256ReadData( ADS1256_MUXP_AIN0|ADS1256_MUXN_AINCOM); Volts = Adc*0.00059453; // 0.00000059453 为系数,ADC生产出后都有一定的偏差,在此校准。 display_num4(LINE1_COLUMN(1),Volts); delay_ms(100); Adc = ADS1256ReadData( ADS1256_MUXP_AIN1|ADS1256_MUXN_AINCOM); Volts = Adc*0.00059453; // 0.00000059453 为系数,ADC生产出后都有一定的偏差,
2022-02-03 14:04:52 59KB 单片机 嵌入式硬件 ADS1256 LCD1602
C8051F120用SPI口读写铁电,铁电芯片为FM24CL04,可兼容FM25CL64,绝对好使。
2022-02-03 10:41:10 3KB C8051F120
1
Excel读写库 LibXL3.94 最新修改版易语言源码
2022-01-30 19:03:14 1.33MB Excel读写库LibXL3
采用BIN模式TCP方式,MELSOFT上位机链接,最大特点是速度超快; 附加中是VB.NET和C#代码,已经在项目中使用过了,很稳定; 支持浮点、双整数、16进制字符等数据类型; 兼容所有Windows的x86、x64系统,支持多线程;
2022-01-28 23:28:34 938KB C# PLC 三菱 Q系列
1
stm32f103的开发板,usb通过spi方式读取sd卡,在电脑端显示sd卡内容,官方的历程spi方式有问题,程序里做了修改。主要修改在SPI_MSD0_Driver.c中。
2022-01-28 16:11:17 273KB stm32 usb sd卡 spi
1
STM32F407单片机读写 MH-Z14A二氧化碳传感器模块并串口输出软件DEMO例程源码,可做为你的学习设计参考。 int main(void) { uint32_t strL; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); MX_USARTx_Init(); HMI_USARTx_Init(); /* 无限循环 */ while (1) { /* 发送读取数值指令 */ if(HAL_UART_Transmit(&husartx,&aTxBuffer[0],9,0xFFFF)==HAL_OK) /* 读取返回值 */ HAL_UART_Receive(&husartx,&aRxBuffer[0],9,0xFFFF); /* 计算气体浓度值 */ strL=aRxBuffer[2]*256+aRxBuffer[3]; HMI_value_setting("page1.t1.txt",aRxBuffer[0]); HMI_value_setting("page1.t7.txt",aRxBuffer[1]); HMI_value_setting("page1.t9.txt",aRxBuffer[2]); HMI_value_setting("page1.t11.txt",aRxBuffer[3]); HMI_value_setting("page1.t13.txt",aRxBuffer[4]); HMI_value_setting("page1.t15.txt",aRxBuffer[5]); HMI_value_setting("page1.t17.txt",aRxBuffer[6]); HMI_value_setting("page1.t19.txt",aRxBuffer[7]); HMI_value_setting("page1.t21.txt",aRxBuffer[8]); HMI_string_setting("page1.t3.txt",strL); printf("二氧化碳浓度为:%d ppm\n",strL); HAL_Delay(5000); } } /** * 函数功能: 向串口屏发送数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_value_setting(const char *val_str,uint32_t value) { uint8_t tmp_str[30]={0}; uint8_t i; sprintf((char *)tmp_str,"%s=\"%x\"",val_str,value); for(i=0;iDR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } /** * 函数功能: 向串口屏发送数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_string_setting(const char *val_str,int32_t value) { uint8_t tmp_str[50]={0}; uint8_t i; sprintf((char *)tmp_
STM32单片机读写24位ADC_AD7190称重模块带液晶显示例程DEMO源码文件,可做为你的学习设计参考。 int main(void) { uint32_t lcdid; float data_temp; int32_t weight_count; uint8_t cali_flag=0; char str[50]; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); KEY_GPIO_Init(); /* 初始化3.5寸TFT液晶模组,一般优先于调试串口初始化 */ lcdid=BSP_LCD_Init(); /* 调用格式化输出函数打印输出数据 */ printf("LCD ID=0x%08X\n",lcdid); LCD_Clear(0,0,LCD_DEFAULT_WIDTH,LCD_DEFAULT_HEIGTH,BLACK); HAL_Delay(1000); /* 开背光 */ LCD_BK_ON(); if(AD7190_Init()==0) { printf("获取不到 AD7190 !\n"); while(1) { HAL_Delay(1000); if(AD7190_Init()) break; } } printf("检测到 AD7190 !\n"); weight_ad7190_conf(); HAL_Delay(500); weight_Zero_Data = weight_ad7190_ReadAvg(6); printf("zero:%d\n",weight_Zero_Data); /* 无限循环 */ while (1) { weight_count=weight_ad7190_ReadAvg(6); data_temp=weight_count-weight_Zero_Data; weight=data_temp*1000/weight_proportion; printf("重量:0x%5X->%f\n",weight_count,weight); sprintf(str,"0x%5X",weight_count); LCD_DispString_EN(190,80,str,BLACK,RED,USE_FONT_24); sprintf(str,"%0.2fg",weight); LCD_Clear(140,100,300,64,BLACK); LCD_DispString_EN(140,100,str,BLACK,YELLOW,USE_FONT_64); HAL_Delay(100); if(KEY1_StateRead()==KEY_DOWN) // 清零 { weight_Zero_Data = weight_ad7190_ReadAvg(6); printf("zero:%d\n",weight_Zero_Data); cali_flag=1; } if(KEY2_StateRead()==KEY_DOWN) // 校准:必须先按“清零”键,然后把20g砝码放在称上,按下校准键 { if(cali_flag) { weight_count = weight_ad7190_ReadAvg(6); weight_proportion=(weight_count-weight_Zero_Data)*1000/100; printf("weight_proportion:%d\n",weight_proportion); } cali_flag=0; } }
#include #include #define uchar unsigned char #define uint unsigned int //********************2402读写指令********************** #define c2402wdat 0xa0 #define c2402rdat 0xa1 //**************************end****************** //**************2402IO***dinyi****************** sbit sda=P1^0; sbit scl=P1^1; sbit P13=P1^3; //********************************************** void dins(uchar a) { uchar b; for(;a>0;a--) for(b=100;b>0;b--) ; } //**************************12MHz**************如为24MHz则所有延时需加陪********************** void start() //**********开始********************** { sda=1; scl=1; _nop_(); _nop_();
2022-01-28 14:01:50 3KB 2402 2401 24c02 24c01
1