解决方案:BlueSpaceNews 程序采集的新闻页面自动生成静态文件
优采云 发布时间: 2022-12-02 21:40解决方案:BlueSpaceNews 程序采集的新闻页面自动生成静态文件
" />
程序采集
的新闻页面自动生成静态文件供下次使用,
" />
没有数据库文件,采用缓存机制,让程序速度快了很多,每半小时更新一次新闻列表信息,重新设计了首页和列表界面,原有的新闻窃贼(新浪)加速版——程序获取新闻页面自动生成静态文件,下次使用,nofile,使用缓存机制,让程序的速度加快很多, 每时事通讯更新一次半小时信息,重新设计首页和列表界面,原创新闻大盗(新浪)加速版
解决方案:麒麟操作系统下数据采集卡的环境设置、驱动安装及应用(二)
Yunpulse USB数据采集卡在国产麒麟操作系统下的应用(二)
——环境设置、采集卡驱动安装与应用
1.基本环境设置
A:更新系统,打开mate终端,输入:
sudo apt-get 更新
sudo apt-get install build-essential
B:安装g++编译器。系统一般默认都有gcc编译器。你只需要单独安装g++编译器。在终端中输入:
sudo apt 安装 g++
安装完成,使用g++ -v命令查询版本信息,安装成功。
C:安装USB相关的系统插件,终端输入:
sudo apt 安装 libusb-1.0-0-dev
D:设置环境变量,用vim打开/etc/ld.so.conf,在里面插入一行
收录
/usr/local/lib
然后,运行sudo ldconfig /etc/ld.so.conf 命令使其生效。
该行的作用是设置/usr/local/lib目录为应用程序运行时需要加载so库文件时的搜索路径。后面我们会把数据采集卡的驱动库文件放在这个目录下。
2、编译数据采集卡的驱动库
这里我们以云脉数据采集卡HK_USB DAQ V1.2为例,
附采集卡功能简介:16通道单端/8通道差分模拟采集,12位,单通道最大采样100kps
8个单向数字输入,8个单向数字输出
1通道pwm测量和计数器和2通道pwm输出功能
首先将驱动库文件driver_usb_daq V1.2复制到任意目录下,可以看到该目录收录
了所有的源文件:
然后在终端输入命令:
打扫干净
制作
编译驱动库文件libusbdaq_v12.so,将驱动库文件复制到系统目录下,在上一级目录下使用命令:
sudo cp ./libusbdaq_v12.so /usr/local/lib
至此,我们已经编译好数据采集卡的驱动程序并安装到系统中,以备我们的应用程序调用板卡的驱动函数读取数据。
3、编写C语言测试应用程序读取采集卡数据
A:写一段C测试代码如下:
#包括
#包括
#包括
#包括
typedef 字符字节;
//*****下面是驱动库文件.h文件的内容。我们可以直接收录
h文件。为了方便,直接把h文件的内容复制到程序的最前面。相关功能的说明可以在资料中找到功能的具体解释在采集卡的PDF手册中***///
int OpenUsb(无效);
int CloseUsb(无效);
int ADSingleV12(int dev, int ad_mod, int chan, int gain, float* adResult);
int ADContinuV12(int dev, int ad_mod, int chan, int gain, int Num_Sample, int Rate_Sample, float *databuf);
int MADContinuV12(int dev, int ad_mod, int chan_first, int chan_last, int gain, int Num_Sample, int Rate_Sample, float *mad_data);
int ADContinuConfigV12(int dev, int ad_mod, int chan, int gain, int Rate_Sample);
int MADContinuConfigV12(int dev, int ad_mod, int chan_first, int chan_last, int gain, int Rate_Sample);
int GetAdBuffSizeV12(void); //-1 --- 错误
int ReadAdBuffV12(int dev, float* databuf, int num);
int ADContinuStopV12(int dev);
int DASingleOutV12(int dev,int chan,int value);
int DADataSendV12(int dev, int chan, int Num, int *databuf);
int DAScanOutV12(int dev, int chan, int Freq, int scan_Num);
int PWMOutSetV12(int dev, int chan, int Freq, float DutyCycle);
int PWMInSetV12(int dev, int mod);
int PWMInReadV12(int dev, float* Freq, int* DutyCycle);
int CountSetV12(int dev, int mod);
int CountReadV12(int dev, int* count);
int DoSetV12(int dev, unsigned char chan, unsigned char state);
int DiReadV12(int dev, unsigned char *value);
unsigned int GetCardIdV12(int dev);
int打开=0;
诠释我;
主函数()
{
if(-1==OpenUsb()) //先调用打开设备函数打开设备
{
printf("####usb 设备打开失败####\n");
返回-1;
}
" />
别的
{
printf("####usb 设备打开正常 ####\n");
}
//这里我们设置采集卡的数字输出端口0、2、4、6输出高电平5V,用电压表测量
//OUT0、2、4、6对GND的输出电压
对于(我= 0;我
{
DoSetV12(0,i,1);
printf("### 写 Dout-%d set 1 ####\n",i);
}
//这里我们设置采集卡的数字输出端口1、3、5、6输出低电平0V
对于(我= 1;我
DoSetV12(0,i,0);
printf("### 写 Dout-%d set 0 ####\n",i);
}
无符号字符 DI=0;
DiReadV12(0,&DI);//
printf("####Din = %x\n",DI);
DASingleOutV12(0,1,(int)(5.8*4095/10));//直接将DA1通道的输出电压设置为固定的5.8V
printf("####DusbEMO 设备 DA1 输出 5.8V ####\n");
DASingleOutV12(0,2,(int)(2.8*4095/10));//直接将DA2通道的输出电压设置为固定的2.8V
printf("####DusbEMO 设备 DA1 输出 2.8V ####\n");
//设置PWM1输出周期性方波,频率为10Hz,占空比为30.5%,可以用示波器查看
PWMOutSetV12(0,0,10,30.5);
printf("####DusbEMO 设备 PWM0 输出 FREq=10hz, duty=30.5% ####\n");
//设置PWM2输出一个10H0z的频率,一个占空比为40.5%的周期性方波,可以用示波器查看
PWMOutSetV12(0,1,100,40.5);//
printf("####DusbEMO 设备 PWM0 输出 FREq=100hz, duty=40.5% ####\n");
浮动广告结果1;
//循环采集模拟量输入通道AD1--16,单端模式下,选择±10V量程,采集并打印到终端输出
对于(我= 0;我
{
//ADSingleV12(int dev, int ad_mod, int chan, int gain, float* adResult);
如果(ADSingleV12(0,1,i,1,&adResult1)==0)
{
printf("AD_single read ad %d =%f\n",i,adResult1);
}
别的
{
printf("读取广告 %d 失败!\n",i);
}
}
浮动数据[1024];
//ADContinuV12(int dev, int ad_mod, int chan, int gain, int Num_Sample, int Rate_Sample, float *databuf);
//调用单通道连续采集函数,采集AD1通道,以10K采样率连续采集1024条数据并打印出来。在实际测试中,可以使用信号发生器输出一个100Hz的正弦波给通道1,这样每100个数据采集一个周期的数据
如果(ADContinuV12(0,1,0,1,1024,10000,数据)==0)
{
对于(我= 0;我
{
printf("AD_continu ad[%d]=%f\n",i,data[i]);
}
}
别的
{
printf("AD_continu 读取广告失败!\n");
}
关闭 USB();
返回 0;
}
B:编写Makefile如下:
INCLUDEDIR := usr/local/include/libusb-1.0/
LIDRARYDIR := /usr/local/lib/
抄送:=海合会
目标:= usb_daq_test
源:= usb_daq_test.c
$(目标):$(来源)
$(CC) -o $@ $(SOURCE) -L $(LIDRARYDIR) -lusbdaq_v12 -lusb-1.0 -lm -lpthread
" />
.PHONY:干净
干净的:
-rm $(目标)
特别注意在编译选项中添加-lusbdaq_v12选项链接采集卡动态库,添加-lusb-1.0链接系统USB插件库,添加-lm -lpthread支持线程等操作, /usr /local/lib/ 是USB驱动库的存放路径。
C:在终端编译测试程序,在终端输入make命令编译出可执行程序usb_daq_test
D:运行测试程序
将USB数据采集卡通过数据线连接到电脑USB口,在终端运行测试程序,输入命令:
须藤./usb_daq_test
运行结果如下:
jq@jqPC:~/daq-v1.2-dev/test/$ sudo ./usb_daq_test
####VID=1d6b;PID=3####
####VID=bda;PID=b009####
####VID=408;PID=5362####
####VID=17ef;PID=6019####
####VID=7812;PID=55b1####
####VID=1d6b;PID=2####
#### USB 设备打开正常####
### 写 Dout-0 集 1 ####
### 写 Dout-2 集 1 ####
### 写 Dout-4 设置 1 ####
### 写 Dout-6 集 1 ####
### 写 Dout-1 集 0 ####
### 写 Dout-3 设置 0 ####
### 写 Dout-5 集 0 ####
### 写 Dout-7 设置 0 ####
#### 喧嚣 = 0
####DusbEMO 设备 DA1 输出 5.8V ####
####DusbEMO 设备 DA1 输出 2.8V ####
####DusbEMO 设备 PWM0 输出 FREq=10hz,duty=30.5%#
####DusbEMO 设备 PWM0 输出 FREq=100hz,duty=40.5%#
AD_单读广告 0 =5.443223
AD_single read ad 1 =4.383394
AD_single read ad 2 =4.442002
AD_single read ad 3 =3.743589
AD_single read ad 4 =4.554335
AD_单读广告5 =3.753358
AD_single read ad 6 =3.128205
AD_单读广告 7 =2.473748
AD_single read ad 8 =0.866911
AD_单读ad 9 =0.148962
AD_单读广告 10 =-0.354091
AD_单读广告 11 =-0.798534
AD_单读广告 12 =-0.925519
AD_单读广告 13 =-1.267399
AD_单读广告 14 =-1.404151
AD_单读广告 15 =-1.462759
AD_continu ad[0]=5.443223
AD_continu ad[1]=5.448108
AD_continu ad[2]=5.448108
AD_continu ad[3]=5.448108
AD_continu ad[4]=5.443223
AD_continu ad[5]=5.443223
AD_continu ad[6]=5.443223
AD_continu ad[7]=5.438339
AD_continu ad[8]=5.448108
AD_continu ad[9]=5.448108
AD_continu ad[10]=5.448108
AD_continu ad[11]=5.443223
AD_continu ad[12]=5.443223
AD_continu ad[13]=5.443223
AD_continu ad[14]=5.443223
AD_continu ad[15]=5.443223
AD_continu ad[16]=5.448108