91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux開(kāi)發(fā)_文件發(fā)送與接收

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 介紹文件發(fā)送、文件接收、線處理服務(wù)器接收、獲取天氣預(yù)報(bào)等知識(shí)點(diǎn)。

任務(wù)1:網(wǎng)絡(luò)編程

1.1 練習(xí)題說(shuō)明

1.?實(shí)現(xiàn)TCP服務(wù)器與TCP客戶(hù)端之間的基本通信,收發(fā)數(shù)據(jù) (按照上課的思路流程看函數(shù)文檔)

2.?實(shí)現(xiàn)TCP服務(wù)器與TCP客戶(hù)端之間的文件傳輸。(單個(gè)文件傳輸)

驗(yàn)證方式: (1) 同一臺(tái)電腦演示 (2)同桌之間演示

考慮的問(wèn)題:

(1)?網(wǎng)絡(luò)的傳輸環(huán)境,考慮應(yīng)答問(wèn)題

(2)?數(shù)據(jù)丟包之后如何處理? 可以重發(fā)

(3)?超時(shí)處理

(4)?服務(wù)器與客戶(hù)端之間連接斷開(kāi)處理。(客戶(hù)端和服務(wù)器兩邊都需要重新連接)

文件傳輸可以在廣告機(jī)中使用。

(5)?每個(gè)數(shù)據(jù)的單位: 分包發(fā)送

(擴(kuò)展要求): 顯示接收進(jìn)度百分比,顯示接收的文件名稱(chēng),推薦: 定義結(jié)構(gòu)體(使用數(shù)據(jù)結(jié)構(gòu))

3.?(擴(kuò)展)實(shí)現(xiàn)TCP服務(wù)器與TCP客戶(hù)端之間的目錄傳輸(一級(jí)目錄)。

4.?(擴(kuò)展)實(shí)現(xiàn)網(wǎng)絡(luò)聊天室(模仿QQ群發(fā)送消息的效果)

(1)?加入進(jìn)去的成員都是客戶(hù)端

(2)?服務(wù)器負(fù)責(zé)給各個(gè)客戶(hù)端轉(zhuǎn)發(fā)消

??一般情況下,推薦最大每次傳輸?shù)淖止?jié)數(shù)不超過(guò)1024字節(jié)。

(1)文件發(fā)送客戶(hù)端

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

/*
TCP客戶(hù)端:
1. sockt創(chuàng)建套接字
2. 連接服務(wù)器
*/
int socket_cfd; /*保存客戶(hù)端套接字*/
int main(int argc,char **argv)
{
	if(argc!=4)
	{
		printf("./server <192.168.xx.xx 服務(wù)器的IP地址> <服務(wù)器端口號(hào)> <文件名稱(chēng)>\n");
		exit(-1);
	}
	
	FILE *file=fopen(argv[3],"wb");
	if(file==NULL)
	{
		printf("文件創(chuàng)建失敗!");
		exit(0);
	}
	
	int err; //存放返回值狀態(tài)
	/*1. 創(chuàng)建套接字*/
	socket_cfd=socket(AF_INET,SOCK_STREAM,0);
	if(socket_cfd<0)
	{
		printf("服務(wù)器端創(chuàng)建失敗!\n");
		exit(-1);
	}
	
	/*2.連接服務(wù)器*/
	struct sockaddr_in ServerAddr;
	ServerAddr.sin_family=AF_INET; //IPV4協(xié)議
	ServerAddr.sin_port=htons(atoi(argv[2]));      //服務(wù)器的端口號(hào) 最大值65535
	ServerAddr.sin_addr.s_addr=inet_addr(argv[1]); //IP地址賦值
	
	err=connect(socket_cfd,(const struct sockaddr *)&ServerAddr,sizeof(struct sockaddr));
	if(err!=0)
	{
		printf("服務(wù)器連接失敗!\n");
		exit(-1);
	}
	
	/*3. 收發(fā)數(shù)據(jù): 接收服務(wù)器發(fā)送的數(shù)據(jù)*/
	char rx_buff[100];
	fd_set readfds; //存放讀事件
	int data;
	int ack=666;
	while(1)
	{
		FD_ZERO(&readfds); //清空文件描述符
		FD_SET(socket_cfd,&readfds); //添加需要監(jiān)控的文件描述符 
		data=select(socket_cfd+1,&readfds,NULL,NULL,NULL);
		if(data>0)
		{
			err=read(socket_cfd,rx_buff,100);
			if(err==0 && data==1)
			{
				printf("服務(wù)器已經(jīng)與客戶(hù)端斷開(kāi)連接!\n");
				break;
			}
			fwrite(rx_buff,1,err,file);//寫(xiě)入數(shù)據(jù)
			printf("客戶(hù)端成功接收%d個(gè)字節(jié)\n",err);
			
			write(socket_cfd,&ack,4); //發(fā)送應(yīng)答信號(hào)。
		}
	}
	close(socket_cfd);
	fclose(file);
	return 0;
}

(2)文件發(fā)送客戶(hù)端

#include 
#include 
#include 
#include 
#include 
#include 

/*
TCP服務(wù)器:
1. sockt創(chuàng)建套接字
2. bind綁定端口
3. 設(shè)置監(jiān)聽(tīng)的數(shù)量
4. 等待客戶(hù)端連接
*/
int socket_sfd; /*保存了服務(wù)器端的套接字*/
int socket_cfd; /*已經(jīng)連接成功的客戶(hù)端套接字*/

/*
服務(wù)器是發(fā)送端
*/
int main(int argc,char **argv)
{
	if(argc!=4)
	{
		printf("./server <192.168.xx.xx 本地IP地址> <服務(wù)器端口號(hào)> \n");
		exit(-1);
	}
	
	FILE *file=fopen(argv[3],"rb");
	if(file==NULL)
	{
		printf("文件打開(kāi)失敗!\n");
		exit(0);
	}
	
	int err; //存放返回值狀態(tài)
	/*1. 創(chuàng)建套接字*/
	socket_sfd=socket(AF_INET,SOCK_STREAM,0);
	if(socket_sfd<0)
	{
		printf("服務(wù)器端創(chuàng)建失敗!\n");
		exit(-1);
	}
	
	/*2. 綁定端口*/
	struct sockaddr_in ServerAddr;
	ServerAddr.sin_family=AF_INET; //IPV4協(xié)議
	ServerAddr.sin_port=htons(atoi(argv[2]));      //服務(wù)器的端口號(hào) 最大值65535
	ServerAddr.sin_addr.s_addr=inet_addr(argv[1]); //IP地址賦值
	err=bind(socket_sfd,(const struct sockaddr *)&ServerAddr,sizeof(struct sockaddr));
	if(err!=0)
	{
		printf("服務(wù)器端 端口綁定失敗!\n");
		exit(-1);
	}
	
	/*3. 設(shè)置監(jiān)聽(tīng)的數(shù)量*/
	listen(socket_sfd,10);
	
	/*4. 等待客戶(hù)端連接*/
	struct sockaddr_in ClientAddr; //存放已經(jīng)連接成功客戶(hù)端信息
	socklen_t addrlen=sizeof(struct sockaddr);    //客戶(hù)端的地址長(zhǎng)度
	socket_cfd=accept(socket_sfd,(struct sockaddr *)&ClientAddr,&addrlen);
	if(socket_cfd<0)
	{
		printf("服務(wù)器端,連接客戶(hù)端失敗!\r\n");
		exit(-1);
	}
	
	/*打印一些客戶(hù)端的信息*/
	printf("成功連接的客戶(hù)端端口號(hào):%d\n",ntohs(ClientAddr.sin_port));
	printf("成功連接的客戶(hù)端IP地址:%s\n",inet_ntoa(ClientAddr.sin_addr));
	
	/*5. 收發(fā)數(shù)據(jù) :服務(wù)器給客戶(hù)端發(fā)送10個(gè)字節(jié)的數(shù)據(jù)*/
	char tx_buff[100];
	int len;
	int ack;
	while(1)
	{
		len=fread(tx_buff,1,100,file);
		printf("服務(wù)器成功發(fā)送:%d 字節(jié)\r\n",len);
		err=write(socket_cfd,tx_buff,len);
		while(1)
		{
			err=read(socket_cfd,&ack,4);  //等待客戶(hù)端的應(yīng)答
			if(err>0&&ack==666)
			{
				break;
			}
		}	
		if(len!=100)break;
	}
	close(socket_sfd);
	fclose(file);
	return 0;
}

文件名稱(chēng)>

任務(wù)2:線程編程

#include

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,

void *(*start_routine) (void *), void *arg);

Compile and link with -pthread.

-lpthread

理解: 一個(gè)線程就是一個(gè)while(1)。

[root@wbyq linux-share-dir]# gcc app.c

/tmp/cccOs4TK.o: In function `main':

app.c:(.text+0x69): undefined reference to `pthread_create'

app.c:(.text+0x8d): undefined reference to `pthread_create'

collect2: ld 返回 1

[root@wbyq linux-share-dir]# gcc app.c -lpthread

練習(xí):

1.?學(xué)習(xí)線程的基本使用

2.?實(shí)現(xiàn)一個(gè)服務(wù)器實(shí)現(xiàn)多個(gè)客戶(hù)端的連接,實(shí)現(xiàn)通信。

思路: 一個(gè)客戶(hù)端就是一個(gè)獨(dú)立的線程。

3.?擴(kuò)展練習(xí): 實(shí)現(xiàn)服務(wù)器同時(shí)對(duì)多個(gè)客戶(hù)端進(jìn)行文件發(fā)送。

(1)?服務(wù)器連接上一個(gè)客戶(hù)端就創(chuàng)建一個(gè)線程。

(2)?線程的函數(shù)需要寫(xiě)幾個(gè)? 1個(gè)

1個(gè)函數(shù)需要考慮的問(wèn)題: 函數(shù)的可重入性能!

需要考慮到資源搶占! 使用信號(hào)量!

1.?CRC16、CRC32校驗(yàn)、

2.?和校驗(yàn) ”abcd <校驗(yàn)和>” -->和

3.?異或校驗(yàn)。 (1) 文件加密解碼

(2) 不添加三個(gè)變量,將兩個(gè)變量的值交換

int a=666; int b=888;

4.?MD5值校驗(yàn)。

客戶(hù)端:

#include 
#include           /* See NOTES */
#include 
#include    //使用大小端轉(zhuǎn)換函數(shù). find /
#include 
/*服務(wù)器端口號(hào)定義*/
#define P_host 8080

//  ./app   192.168.18.3
/*TCP客戶(hù)端代碼*/
int main(int argc,char *argv[])
{
	  if(argc!=2)
	  {
	  	  printf("參數(shù)錯(cuò)誤:./app <服務(wù)器IP地址>\n");
	  		return -1;
	  }
	 int clientfd;
	 struct sockaddr_in server_address;     //存放服務(wù)器的IP地址信息
	 memset(&server_address,0,sizeof(struct sockaddr_in)); //初始化內(nèi)存空間
	 server_address.sin_family=AF_INET;            //IPV4協(xié)議
	 server_address.sin_port=htons(P_host);        //端口號(hào)賦值
	 server_address.sin_addr.s_addr=inet_addr(argv[1]);    //本地IP地址
	 /*1 .創(chuàng)建套接字*/
    clientfd=socket(AF_INET,SOCK_STREAM,0);
   if(clientfd<0)
   	{
   	    printf("客戶(hù)端網(wǎng)絡(luò)套接字創(chuàng)建失敗!\n");	
   	    return -1;
   	}
   	
   	/*2. 連接服務(wù)器*/
   	if(connect(clientfd,(const struct sockaddr *)&server_address,sizeof(struct sockaddr))!=0)
   	{
   		  printf("客戶(hù)端連接服務(wù)器失敗!\n");	
   	    return -1; 	
   	}
   	char buff[1024];
   	
   	while(1)
   	{
   	    gets(buff);
   	    write(clientfd,buff,strlen(buff)); 
   	}
		return 0;
}

服務(wù)器:

#include 
#include           /* See NOTES */
#include 
#include    //使用大小端轉(zhuǎn)換函數(shù)
#include 
#include 
#include 
#include 
#include 
#include 
//函數(shù)聲明
void *start_routine_1(void *dev);
void *start_routine_2(void *dev);

typedef void *(*start_routine) (void *);
start_routine fun[]={start_routine_1,start_routine_2};
pthread_t thread_id[2];                //存放線程的標(biāo)識(shí)符
int clientfd[2];                       //保存TCP客戶(hù)端的網(wǎng)絡(luò)套接字
struct sockaddr_in client_address[2];  //存放客戶(hù)端的信息
socklen_t address_len[2];              //存放客戶(hù)端結(jié)構(gòu)體信息的長(zhǎng)度
/*服務(wù)器端口號(hào)定義*/
#define P_host 8080

/*TCP服務(wù)器代碼*/
int main(int argc,char *argv[])
{
	 int socketfd;
	 struct sockaddr_in server_address;     //存放服務(wù)器的IP地址信息
	 memset(&server_address,0,sizeof(struct sockaddr_in)); //初始化內(nèi)存空間
	 memset(client_address,0,sizeof(struct sockaddr_in)*2); //初始化內(nèi)存空間
	 server_address.sin_family=PF_INET;            //IPV4協(xié)議
	 server_address.sin_port=htons(P_host);        //端口號(hào)賦值
	 server_address.sin_addr.s_addr=INADDR_ANY;    //本地IP地址
  /*1 .創(chuàng)建套接字*/
   socketfd=socket(PF_INET,SOCK_STREAM,0);
   if(socketfd<0)
   	{
   	    printf("服務(wù)器網(wǎng)絡(luò)套接字創(chuàng)建失敗!\n");	
   	    return -1;
   	}
      	 
   /*2. 綁定端口,創(chuàng)建服務(wù)器*/
   if(bind(socketfd,(const struct sockaddr *)&server_address,sizeof(struct sockaddr))!=0)
   	{
   	    printf("服務(wù)器綁定端口失敗!\n");	
   	    return -1; 	
   	}
   
   /*3. 設(shè)監(jiān)聽(tīng)的端口數(shù)量*/
   if(listen(socketfd,10)!=0)
   	{
   	   printf("服務(wù)器端口監(jiān)聽(tīng)失敗!\n");	
   	   return -1;	 
   	}
   
    int i;
    
    for(i=0;i<2;i++)
   	{
   		 address_len[i]=sizeof(struct sockaddr);  //計(jì)算結(jié)構(gòu)體大小 20 
   	  /*4. 等待客戶(hù)端連接*/
	    if((clientfd[i]=accept(socketfd,(struct sockaddr *)&client_address[i],&address_len[i]))<0)
	   	{
	   	   	printf("等待客戶(hù)端連接失敗!\n");	
	   	    break;	
	   	} 
	    
	    //創(chuàng)建線程
	   	if(pthread_create(&thread_id[i],NULL,fun[i],NULL)!=0)
		{
		   printf("線程_%d_創(chuàng)建失敗!\n",i);		
		} 	
   	}
   	
   	while(1)
   	{
   	    	
   	}
     	
   //阻塞方式等待線程的結(jié)束
	pthread_join(thread_id[0],NULL);
	pthread_join(thread_id[1],NULL);
	return 0;	
}
//線程1
void *start_routine_1(void *dev)
{
	 while(1)
	 {
	 	  printf("TCP客戶(hù)端1連接!\n");
	 	  sleep(2);
	 }
	 //終止線程
	 pthread_exit(NULL);
}
//線程2
void *start_routine_2(void *dev)
{
	while(1)
	{
	 	  printf("TCP客戶(hù)端2連接!\n");
	 	  sleep(2);
	}
	 //終止線程
	 pthread_exit(NULL);
}

任務(wù)3:使用的網(wǎng)絡(luò)服務(wù)器接口

C語(yǔ)言:面向過(guò)程 、 面向?qū)ο?/p>

1.?車(chē)牌號(hào)識(shí)別

2.?二維碼生成

3.?獲取北京時(shí)間

獲取接口的網(wǎng)址:http://www.k780.com/

1.?調(diào)用網(wǎng)絡(luò)的接口的方式: (天氣預(yù)報(bào))

curl http://api.k780.com:88/?app=weather.future'&'weaid=南昌

'&&'appkey=10003'&'sign=b59bc3ef6191eb9f747dd4e83c99f2a4'&'format=json >123.txt

注意: &是特殊的符號(hào),需要使用單引號(hào)或者雙引號(hào)括起來(lái)。

Curl: 命令行的瀏覽器。

2.?調(diào)用二維碼生成的接口

curl http://api.k780.com:88/?app=qr.get'&'data=www.wanbangee.com'&'level=L'&'size=6 >123.png

?? 練習(xí):

1.?天氣預(yù)報(bào)查詢(xún)

查詢(xún)的格式: ./app <城市的中文名稱(chēng)>

poYBAGMlPamARKUnAAA4mjEWJsA386.png

2.?獲取北京標(biāo)準(zhǔn)時(shí)間,顯示出來(lái)

pYYBAGMlPamAcAvwAAAMsIAQj18578.png

3.?二維碼生成創(chuàng)建 運(yùn)行格式: ./app <生成的二維碼內(nèi)容>

生成之后直接顯示在屏幕上。可以使用eog命令

4.?車(chē)牌號(hào)的識(shí)別

5.?調(diào)用百度地圖API接口 http://lbsyun.baidu.com/index.php?title=uri/api/web

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10267

    瀏覽量

    91533
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1425

    瀏覽量

    83549
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    594

    瀏覽量

    26071
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux文件刪除的底層原理和恢復(fù)方法

    rm -rf 大概是 Linux 世界里殺傷力最大的命令,沒(méi)有之一。手一抖、路徑一錯(cuò)、通配符一飄,幾個(gè) G 的數(shù)據(jù)就沒(méi)了。更要命的是 Linux 默認(rèn)沒(méi)有回收站機(jī)制,rm 刪掉的文件不會(huì)像 Windows 那樣安靜地躺在回收站里
    的頭像 發(fā)表于 02-11 09:14 ?496次閱讀

    深入RK3588內(nèi)核:rockchip_linux_defconfig的作用與調(diào)試價(jià)值

    在 RK3588 芯片的 Linux 開(kāi)發(fā)中,有一個(gè)文件始終是開(kāi)發(fā)者繞不開(kāi)的核心 ——kernel/arch/arm64/configs/rockchip_
    的頭像 發(fā)表于 02-03 15:56 ?1179次閱讀
    深入RK3588內(nèi)核:rockchip_<b class='flag-5'>linux</b>_defconfig的作用與調(diào)試價(jià)值

    Linux開(kāi)發(fā)嵌入式必備命令速查表

    在嵌入式開(kāi)發(fā)中,Linux系統(tǒng)幾乎成為必備的開(kāi)發(fā)環(huán)境。不管你是在做STM32、RaspberryPi、還是基于ARM的板子,熟練掌握Linux命令不僅能加快
    的頭像 發(fā)表于 01-19 09:06 ?891次閱讀
    <b class='flag-5'>Linux</b> 下<b class='flag-5'>開(kāi)發(fā)</b>嵌入式必備命令速查表

    【免費(fèi)送書(shū)】成為硬核Linux開(kāi)發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)》

    Linux系統(tǒng)的設(shè)備驅(qū)動(dòng)開(kāi)發(fā),一直給人門(mén)檻較高的印象,主要因內(nèi)核機(jī)制抽象、需深度理解硬件原理、開(kāi)發(fā)調(diào)試難度大所致。2021年,一本講解驅(qū)動(dòng)開(kāi)發(fā)的專(zhuān)著問(wèn)世即獲市場(chǎng)青睞,暢銷(xiāo)近萬(wàn)冊(cè)——這便
    的頭像 發(fā)表于 11-18 08:06 ?1469次閱讀
    【免費(fèi)送書(shū)】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>者:《<b class='flag-5'>Linux</b> 設(shè)備驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>(第 2 版)》

    Linux新手通關(guān)!5分鐘掌握文件/目錄管理,告別“找不到北”

    新手入門(mén):Linux?文件?/?目錄管理實(shí)操指南 剛上手?Linux?的小伙伴,是不是常陷入這些?“混亂時(shí)刻”:想找的文件藏在層層目錄里,翻半天找不到;誤刪
    的頭像 發(fā)表于 11-17 10:42 ?437次閱讀
    <b class='flag-5'>Linux</b>新手通關(guān)!5分鐘掌握<b class='flag-5'>文件</b>/目錄管理,告別“找不到北”

    接收Ymedom文件后釋放內(nèi)存報(bào)錯(cuò),重啟怎么解決?

    測(cè)試OTA功能正常了,使用sy發(fā)送文件也是正常,使用ry接收數(shù)據(jù)后提示釋放內(nèi)存出錯(cuò)系統(tǒng)重啟了。這里困擾住了,文件已經(jīng)正常存放在根文件系統(tǒng)下
    發(fā)表于 09-28 09:07

    RK3506開(kāi)發(fā)Linux開(kāi)發(fā)板極致性?xún)r(jià)比之選

    RK3506開(kāi)發(fā)Linux開(kāi)發(fā)板極致性?xún)r(jià)比之選瑞芯微RK3506開(kāi)發(fā)板,3核Cortex-A7@1.5GHz+Cortex-M0,Linux
    的頭像 發(fā)表于 09-11 16:26 ?3492次閱讀
    RK3506<b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>板極致性?xún)r(jià)比之選

    Linux 應(yīng)用開(kāi)發(fā)手冊(cè)

    T507linux應(yīng)用開(kāi)發(fā)手冊(cè)
    發(fā)表于 08-22 17:01 ?15次下載

    Linux三大主流文件系統(tǒng)解析

    還在為選擇哪個(gè)文件系統(tǒng)而糾結(jié)?作為一名摸爬滾打多年的運(yùn)維老鳥(niǎo),我將用最接地氣的方式,帶你徹底搞懂 Linux 三大主流文件系統(tǒng)的奧秘。
    的頭像 發(fā)表于 08-05 17:37 ?1462次閱讀

    2.4GHZ 發(fā)送/接收 ZIGBEE RFEIC,帶分集開(kāi)關(guān) skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()2.4GHZ 發(fā)送/接收 ZIGBEE RFEIC,帶分集開(kāi)關(guān)相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有2.4GHZ 發(fā)送/接收 ZIGBEE RFEIC,帶分集開(kāi)關(guān)的引腳圖
    發(fā)表于 06-26 18:35
    2.4GHZ <b class='flag-5'>發(fā)送</b>/<b class='flag-5'>接收</b> ZIGBEE RFEIC,帶分集開(kāi)關(guān) skyworksinc

    Linux修改uboot啟動(dòng)延時(shí)方法詳細(xì)攻略,觸覺(jué)智能RK3568開(kāi)發(fā)板演示

    OpenHarmony3.2-5.0,以及Linux、Android等操作系統(tǒng),接口豐富,開(kāi)發(fā)評(píng)估快人一步!修改uboot延時(shí)首先查找defconfig文件./build.shub
    的頭像 發(fā)表于 06-06 18:07 ?960次閱讀
    <b class='flag-5'>Linux</b>修改uboot啟動(dòng)延時(shí)方法詳細(xì)攻略,觸覺(jué)智能RK3568<b class='flag-5'>開(kāi)發(fā)</b>板演示

    Linux文件系統(tǒng)打包及鏡像制作,觸覺(jué)智能RK3562開(kāi)發(fā)板演示

    本文介紹Linux開(kāi)發(fā)文件系統(tǒng)打包及鏡像制作的方法,演示Linux文件系統(tǒng)打包及鏡像制作,適用于想將配置好的系統(tǒng)環(huán)境打包成鏡像批量燒錄。觸
    的頭像 發(fā)表于 04-28 16:45 ?1020次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b>系統(tǒng)打包及鏡像制作,觸覺(jué)智能RK3562<b class='flag-5'>開(kāi)發(fā)</b>板演示

    【道生物聯(lián)TKB-620開(kāi)發(fā)板試用】燒錄示例工程

    OLED顯示屏上顯示發(fā)送與接收的信息如下: 【小結(jié)】 通過(guò)燒錄固件,驗(yàn)證開(kāi)發(fā)板的demo,下面就可以進(jìn)入實(shí)際開(kāi)發(fā)了。 【建議】 在工程中最好加入一個(gè)readme.txt
    發(fā)表于 04-17 13:44

    [迅為]Linux開(kāi)發(fā)小技巧:Remote - SSH插件

    [迅為]Linux開(kāi)發(fā)小技巧:Remote - SSH插件
    的頭像 發(fā)表于 04-01 15:46 ?1188次閱讀
    [迅為]<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>小技巧:Remote - SSH插件

    從零開(kāi)始馴服Linux(一):ZYNQ-Linux啟動(dòng)文件構(gòu)建全解析

    定位問(wèn)題并優(yōu)化代碼。本教程我們就一起來(lái)看一下,如何基于正點(diǎn)原子提供的出廠相關(guān)源代碼,制作ZYNQ開(kāi)發(fā)板的啟動(dòng)文件,并成功運(yùn)行Linux系統(tǒng)。 1.1制作前準(zhǔn)備工作1)、一款ZYNQ開(kāi)發(fā)
    發(fā)表于 03-20 16:48