该控件继承QWidget,实现了左右上下四种形式的坐标轴控件。
可以设置固定间隔或自动选择间隔可以设置最小间隔开放一个槽来动态调整坐标轴的范围处理了边缘刻度的显示/*************************************************************************版权所有(C)2012-2015,liang1057@yahoo.com.cn类声明:坐标轴控件************************************************************************//**@brief坐标轴控件**@details坐标轴控件只有刻度和数字,数字可以隐藏(用来显示其他需要显示的刻度值)*/classuiAxis:publicQWidget{Q_OBJECTpublic:/**@brief坐标轴类型**@details坐标轴类型*/enumAXISTYPE{LEFT_AXIS=0,TOP_AXIS,RIGHT_AXIS,BOTTOM_AXIS};/**@brief构造函数*/uiAxis(AXISTYPEtype=BOTTOM_AXIS,QWidget*parent=0);/**@brief析构函数*/~uiAxis(void);/**@brief设置坐标轴的范围*/voidsetScop(doubleminValue,doublemaxValue);/**@brief获取坐标轴的范围*/voidgetScop(double&minValue,double&maxValue);/**@brief获取坐标轴的范围*/doublegetMinValue();doublegetMaxValue();/**@brief设置坐标轴的类型*/voidsetAxisType(AXISTYPEtype);/**@brief坐标轴的类型*/AXISTYPEgetAxisType();/**@brief设置最小刻度(小刻度的最小间隔)*/voidsetMinInterval(doublevalue);/**@brief设置自动间隔*/voidsetAutoScale(boolval=true);/**@brief设置固定间隔*/voidsetSettedScale(boolval=true);/**@brief设置坐标轴的绘制范围,像素值*/voidsetBoundary(intleft,intright,inttop,intbottom);voidgetBoundary(int&left,int&right,int&top,int&bottom);
2024/8/15 19:23:02 4KB Qt 坐标轴
1
此为本人写的MC9S12XEP100的IIC模块的硬件驱动程序。
具体参照博文https://blog.csdn.net/lin_strong/article/details/80327959,如后续有更新代码或勘误,请直接到博文里查阅,好像CSDN不允许更新/删除资源。
其中包含了驱动代码以及示例代码,示例代码包括裸奔程序的示例以及uCOS-II下的示例。
注意,代码中的裸奔程序的那个示例直接运行时会跑飞,需要在IIC.h文件中的voidnearIIC_ISR(void);这个声明前加一个interrupt才行。
在运行基于uCOS的那个示例时又得把这个interrupt去掉才行。
暂时没有找到能够很方便地切换中断声明的方法。
2024/8/15 2:57:30 2.57MB IIC总线 MC9S12XEP100 uCOS-II
1
基于C语言开发的控制台应用程序voidmain(void){intk;printf("请选择大地主题算法,若执行正算,请输入1;
若执行反算,请输入2。
\n");scanf("%d",&k);/*大地主题正算*/if(k==1){doubleax,ay,az,bx,by,bz,cx,cy,cz,S,dz,ez,fz,B1,B2,L1,L2,A1,A2;intdx,dy,ex,ey,fx,fy;doublee2,W1,sinu1,cosu1,sinA0,coto1,sin2o1,cos2o1,sin2o,cos2o,A,B,C,r,t,o0,o,g,sinu2,q;/*输入度分秒数据*/printf("请输入大地线起点纬度度分秒\n");scanf("%lf%lf%lf",&ax;,&ay;,&az;);
2024/7/10 12:28:51 1.78MB 大地主体解算 正算 反算 白塞尔
1
intmain(void){delay_init();//延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);//串口初始化为115200LED_Init();//初始化与LED连接的硬件接口TM1637_Init();while(1){delay_ms(1);//延时1msTM1637_NixieTubeDisplay();TM1637_NixieTubeDisplayChar(1,0);//第一位显示1TM1637_NixieTubeDisplayChar(2,1);//第二位显示2TM1637_NixieTubeDisplayChar(3,2);//第三位显示3TM1637_NixieTubeDisplayChar(4,3);//第四位显示4}}
2024/6/28 16:21:43 2.55MB STM32 TM1637 四段数码管
1
voidpresetSingleRegister(void) //设置单个寄存器{ U8addr; U8tempAddr; U8setCount; U16crcData; U16tempData; //addr=(receBuf[2]8; sendBuf[3]=addr&0xff; sendBuf[4]=receBuf[4]; sendBuf[5]=receBuf[5]; setCount=6; //共6个字节 crcData=crc16(sendBuf,6); sendBuf[6]=crcData>>8; sendBuf[7]=crcData&0xff; sendCount=8; beginSend();}//设置多个寄存器voidpresetMultipleRegisters(void){ UINT8addr; UINT8tempAddr; UINT8byteCount; UINT8setCount; UINT16crcData; UINT16tempData; UINT8i; //addr=(receBuf[2]8; sendBuf[3]=addr&0xff; sendBuf[4]=setCount>>8; sendBuf[5]=setCount&0xff; crcData=crc16(sendBuf,6); sendBuf[6]=crcData>>8; sendBuf[7]=crcData&0xff; sendCount=8; beginSend();}码
2024/6/16 13:03:24 8.16MB modbus
1
/***************深圳市赛亿科技开发有限公司*********************文件名:adc*描述:多通道AD采集(源文件)*实验平台:STM8S105开发板*库版本:V1.0*作者:hcr*QQ:630054913*修改时间:2014-9-20*******************************************************************************/#include"adc.h"u16AdcData_Buff[10];//AD采集缓存u16AdcValue_Channel1;//通道1值u16AdcValue_Channel2;//通道2值u16AdcValue_Channel3;//通道3值floatAdc_V1;//通道1值电压值floatAdc_V2;//通道2值电压值floatAdc_V3;//通道3值电压值/***************************************************************************函数名:Adc_Task(void)*描述:AD不通通道选择*输入:无*输出:无*返回:无*调用:10ms调用*************************************************************************/voidAdc_Task(void){staticu8Adc_Channel=1;staticu8Adc_Timer=0;staticu16Adc_GetValue;switch(Adc_Channel)//通道选择{case1://通道1Adc_GetValue=ADC1_GetConversionValue();//获取ADC转换数AdcData_Buff[Adc_Timer]=Adc_GetValue;//保存采样值if(Adc_Timer8) {Adc_Timer=0;//复位 Temp_Choose();//冒泡法求中间值AdcValue_Channel1=AdcData_Buff[5];//取中间值Adc_V1=(3.28*AdcValue_Channel1)/1023;//算出实际电压AdcData_Clean();//清除缓存数据Adc_Channel=2;//另一通道AdcChannel_Start(ADC1_CHANNEL_2);//ADC,通道2启动 }break;case2://通道2
2024/4/17 19:02:08 312KB stm8s AD多通道采集
1
+(UIView*_Nullable)az_gradientViewWithColors:(NSArray*_Nullable)colorslocations:(NSArray*_Nullable)locationsstartPoint:(CGPoint)startPointendPoint:(CGPoint)endPoint;-(void)az_setGradientBackgroundWithColors:(NSArray*_Nullable)colorslocations:(NSArray<NSN
2024/4/14 1:07:25 5.15MB OC 工具类 封装 Extension
1
#include#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#defineLED_DATP0sbitLED_SEG0=P2^7;sbitLED_SEG1=P2^6;sbitLED_SEG2=P2^5;sbitLED_SEG3=P2^4;#defineTIME_CYLC100//12M晶振,定时器10ms中断一次我们1秒计算一次转速//1000ms/10ms=100#definePLUS_PER10//码盘的齿数,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈#defineK1.65//校准系数unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchardataDisbuf[4];//显示缓冲区uintTcounter=0;//时间计数器bitFlag_Fresh=0;//刷新标志bitFlag_clac=0;//计算转速标志bitFlag_Err=0;//超量程标志voidDisplayFresh();//在数码管上显示一个四位数voidClacSpeed();//计算转速,并把结果放入数码管缓冲区voidinit_timer();//初始化定时器T0\T1voidDelay(uintms);//延时函数voidit_timer0()interrupt1/*interruptaddressis0x000b*/{TF0=0;//定时器T0用于数码管的动态刷新TH0=0xC0;TL0=0x00;Flag_Fresh=1;Tcounter++;if(Tcounter>TIME_CYLC){Flag_clac=1;//周期到,该重新计算转速了}}voidit_timer1()interrupt3/*interruptaddressis0x001b*/{TF1=0;//定时器T1用于单位时间内收到的脉冲数//要速度不是很快,T1永远不会益处Flag_Err=1;//如果速度很高,我们应考虑另外一种测速方法:T测速法}voidmain(void){Disbuf[0]=0;//开机时,初始化为0000Disbuf[1]=0;Disbuf[2]=0;Disbuf[3]=0;init_timer();while(1){if(Flag_Fresh){Flag_Fresh=0;DisplayFresh();//定时刷新数码管显示}if(Flag_clac){Flag_clac=0;ClacSpeed();//计算转速,并把结果放入数码管缓冲区Tcounter=0;//周期定时清零TH1=TL1=0x00;//脉冲计数清零}if(Flag_Err)//超量程处理{Disbuf[0]=0x9e;//开机时,初始化为0000Disbuf[1]=0x9e;Disbuf[2]=0x9e;Disbuf[3]=0x9e;while(1){DisplayFresh();//不再测速等待复位i}}}}//在数码管上显示一个四位数voidDisplayFresh(){P2|=0xF0;LED_SEG0=0;LED_DAT=table[Disbuf[0]];Delay(1);P2|=0xF0;LED_SEG1=0;LED_DAT=table[Disbuf[1]];Delay(1);P2|=0xF0;LED_SEG2=0;LED_DAT=table[Disbuf[2]];Delay(1);P2|=0xF0;LED_SEG3=0;LED_DAT=table[Disbuf[3]];Delay(1);P2|=0xF0;}//计算转速,并
2024/3/2 19:19:54 400KB 光电传感器、测速、protus、pcb
1
//***************************************************voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data){HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress);//发送设备地址+写信号HMC5883_SendByte(REG_Address);//内部寄存器地址,请参考中文pdfHMC5883_SendByte(REG_data);//内部寄存器数据,请参考中文pdfHMC5883_Stop();//发送停止信号}//********单字节读取内部寄存器*************************ucharSingle_Read_HMC5883(ucharREG_Address){ucharREG_data;HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress);//发送设备地址+写信号HMC5883_SendByte(REG_Address);//发送存储单元地址,从0开始HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress+1);//发送设备地址+读信号REG_data=HMC5883_RecvByte();//读出寄存器数据HMC5883_SendACK(1);HMC5883_Stop();//停止信号returnREG_data;}//******************************************************////连续读出HMC5883内部角度数据,地址范围0x3~0x5////******************************************************voidMultiple_read_HMC5883(void){uchari;HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress);//发送设备地址+写信号HMC5883_SendByte(0x03);//发送存储单元地址,从0x3开始HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress+1);//发送设备地址+读信号for(i=0;i<6;i++)//连续读取6个地址数据,存储中BUF{BUF[i]=HMC5883_RecvByte();//BUF[0]存储数据if(i==5){HMC5883_SendACK(1);//最后一个数据需要回NOACK}else{HMC5883_SendACK(0);//回应ACK}}HMC5883_Stop();//停止信号Delay5ms();}//初始化HMC5883,根据需要请参考pdf进行修改****voidInit_HMC5883(){Single_Write_HMC5883(0x02,0x00);//}
2024/2/2 6:29:11 73KB HMC5883L QMC5883L
1
C#5.0引入async/await关键字,旨在简化异步编程模型,抛去语法糖就是Net4.0的Task+状态机。
其实在处理异步编程使用Task还是挺简单的,不过既然推出了新的语法糖,难免会尝试一下,然而在使用中却没想象中那么单纯。
以下针对ASP.NET应用程序实际使用过程中的一些总结,包括异常捕获、死锁、应用程序崩溃,实际使用过程中一不注意就可能掉坑里了。
异常捕获async方法有三种返回类型:void、Task、Taskasyncvoid该方式声明的方法是无法使用catch捕获异常的,所以以下代码的try、catch并没什么卵用。
2024/1/28 9:20:58 74KB .NET AS async
1
共 63 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡