❶ 桌面端開發都用什麼語言,簡單分析下這些語言的優劣勢對比
目前,最優的選擇有四個:
1.如果只在win下使用,.net form是不二選擇,可謂是又快又好,企業應用或定製開發都是相當好的,初學者也可以入手。
2.electron,跨平台。需要會前端,必須熟悉js、css和html。屬於前端人員大殺器,如果是初學者,需要一下子學三樣東西,再加上electron的進程間通信,可能會被搞懵。
3. qt5,可以使用qml(js語法)進行UI編程,但是需要懂c艹,但是寫軟體相當快,還可以寫安卓、ios、linux、嵌入式中的應用。
4.flutter,剛剛正式支持win平台的軟體開發。谷歌出的這個東西,適合沒有基礎的初學者,因為是一個全新的體系,全新的語言,寫ios、安卓非常高效,之後還會兼容h5。如果是初學者可以跟著走,值得嘗試。但是新東西總有一些坑。
正式項目跨平台建議electron或qt,只用win平台強烈建議微軟自己的net。個人技術嘗試建議flutter。
桌面端開發跨平台的,如果你是輕量級的項目,那麼我推薦你用electron, 目前使用Electron來開發的桌面應用非常多,我們最熟悉的比如Atom,VScode等等。
而且在github上也能找到許多應用使用了electron。
electron是Node,Chromium,html,css,js的結合框架,這就需要你有一定的前端基礎。其實只需要了解一下electron的API就行了,其他的就像你在做web是一樣的。
這種方式最大的缺點就是性能,還有透明窗口也有問題。所以在做需要性能方面佔有很大成分的項目時,並不推薦使用這個方式。
那麼其他的,就是最近幾年使用比較多的windows directui框架,但它不是跨平台的。
那麼就引出了qt,作為c++跨平台的界面框架,這個上手的話,我覺得對一般人是有難度的,因為首先需要扎實的c++功底,其次你要熟悉控制項的製作原理,因為有時候你需要定製自己的UI控制項。它現在在嵌入式,軍工領域非常受歡迎。但是整個庫非常臃腫龐大,而且開發界面的效率也非常低。如果來做互聯網項目,迭代更新的速度根本就跟不上。
目前都只有大公司會採用,像maya這種生產力型的應用很多是qt做的。
還有一種是直接使用Cef加js,比如網易雲音樂,就是這么搞的,但是很多和系統平台的交互介面你需要重寫,等於是需要自己造輪子。工作量大,目前沒有適合的框架給你套用,也需要扎實的c++功底。
其實pc端的應用基本也就windows會火一些,再加一個macos,那麼選擇qt應該會很好一點,畢竟你自己造一個跨平台的框架,太費時。總之,做跨平台就意味著,不可能做到既有效率又完美的實現各種功能,許多都要自己摸索。
win桌面端直接上visual studio啊!然後你熟悉什麼語言?vb.net,c#,c++都有相應的win桌面工具。直接用就好了,非常好用
編程語言這種東西無所謂,只要能用啥都可以。 主要看你老闆需要和你會用什麼語言。
比如 我用AS編安卓程序,當然用java。不過我後台最開始用ASP和ASP.NET來做,現在換PHP了。桌面端用QT或者VB做。 涉及單片機部分控制也用C。
現在做跨平台的了 開始以QT為主了。
只要能達到目的啥都可以。
學會1-2種 換其他的也不是很難。
對初學者來建議學C起步吧。
精通一門,重新學個語言入門也就1個月的事。
PC桌面程序,如果簡單一點的,用pyqt5+python的開發難度和周期都比較現實一點
會C++ 用Qt5 非常不錯 寫代碼效率很高
會js 用atom使用的那個框架
會Python用PyQt 寫代碼很快
會java用JavaFX
看語言咯
還可以用delphi,其firemonkey框架發布8年時間,支持跨平台:win,安卓,ios,macos,linux,後續支持webassembly,界面是控制項拖拽布局所見即所得,開發效率較高。編譯生成的是機器碼,編譯速度快,調試方便,其生成機器碼運行效率較高,支持x86,arm的32位64位處理器。支持跨平台3D界面,藍牙通訊,定位,重力,攝像等,支持多種SQL,NoSQL資料庫。單個開發工具實現前後端開發,跨平台開發。適合個人和小公司用一套工具實現大部分開發需求。
主要有以下幾種技術
### Duilib
#### 簡述
Duilib是在Windows平台上使用最廣泛的類庫,使用C++和XML混合編程,國內很多計算機企業都喜歡使用這個類庫,可能是由於他的技術許可比較寬泛的原因。
適合於界面比較簡單的軟體,視覺特效豐富,局限於Windows的平台。例子:360電腦管家。
#### 優勢
#### 劣勢
### Gtk、Qt或WxWidget:
#### 簡述
三種基本可以做到跨平台的技術,使用C/C++開發,使用者廣泛。其中WxWidget使用了API嫁接方式,Qt和Gtk(包括各種綁定技術)使用自繪技術。
結構嚴謹,軟體可以做的很大很復雜。例子:WPS和Maya。
#### 優勢
#### 劣勢
### Electron:
#### 簡介
使用Web技術開發桌面軟體,基於Chromium(Chrome)引擎,使用JS編程語言,絕大多數使用者都是原來的網頁開發者。
絕大多數都是愛好者使用,處於「勉強可用」的地步。
適合大面積靜態展示型軟體使用。例子:網易雲音樂。
#### 優勢
#### 劣勢
### QtQuick(QML)
#### 簡述
Qt公司開發的一款基於OpenGL的圖形類庫,有顯卡加速,類似於Duilib。採用了C++與QML混合編程。QML類似於JavaScript語言。
QtQuick下一個版本在Qt 6上更加強大,業界期待已久。
#### 優勢
#### 劣勢
### Atk、Swing或JavaFX
使用Java語言開發軟體,有JDK加持業界積累的眾多Java類庫支持。有不輸於VS的IDEA加持,本應該更棒,只是現在已經式微了。
絕大多數使用者都是企業開發(不追求界面美觀)、愛好者(開發順手)。
### WinForm、WPF或Xamarin:
使用C#開發,WinForm和WPF局限於Windows平台。有VisualStudio加持使用很爽。
### Flutter:
使用Dart語言,新類庫,bug可能會很多。
### SwiftUI或Cocoa:
蘋果平台原生界面技術,macOS平台內建支持,不是macOS專用軟體不推薦。
### Win32:
經典Windows 平台API,絕大多數只有一些老軟體還在使用,不是維護老軟體不推薦。
winform,不二選擇
webview2,作為一個瀏覽器控制項嵌入在桌面應用中,支持.net core和.net framework
❷ 怎麼使用esp8266WiFi模塊,js連接mqtt,實現簡單的智能家居控制
如果您是想通過esp8266WiFi模塊的MQTT協議來實現智能家居控制的話,可以了解一下支持MQTT協議的esp8266WiFi模塊,比如SKYLAB的WG219/WG229以及WG231。
WG229
WG229是一款基於ESP8266晶元方案的小尺寸低功耗低成本串口WiFi模塊,符合802.11b / g / n 無線模塊標准,支持UART-WiFi -乙太網數據傳輸。專為移動設備和物聯網應用設計,可將用戶的物理設備連接到WiFi無線網路上,進行互聯網或區域網通信,實現聯網功能。另外WG229僅需要通過出串口使用AT指令控制,就能滿足大部分的網路功能需求。WG229高性能、低功耗、低成本、支持串口透傳等特性,使得WG229在高集成、低功耗自動化和感測器解決方案的理想解決方案,WG229和LCS6260 Pin對Pin兼容,可替代ESP8266方案的ESP-12F。
支持MQTT協議的IoT UART介面WiFi模塊也都是支持對接雲端服務的。LCS6260支持對接阿里雲、塗鴉雲,WG219/WG229/WG231支持對接阿里雲。
❸ 怎麼使用esp8266WiFi模塊,js連接mqtt,實現簡單的智能家居控制
開發資源
1、Esp8266 Wi-Fi模塊
2、局中型機智雲串口調試軟體
3、51單片機或者STM32單片機或者其它單片機
4、Windows 10
主要設計思路
一句話概括:將esp8266 Wi-Fi 模塊連接上能上網的路由器(手機開熱點作為路由器也行),連接過程需要做一些配置,以跟機智雲平台對接。之後智能終端(手機或平板)跟Wi-Fi模塊綁定後即可遠程或者區域網控制設備。
簡易介紹機智雲官方提供的文檔資料
機智雲給開發者提供了大量開發支持,如開源的安卓/蘋果SDK、APP等,開發者直接在開源的架構上二次開發即可,從而減少開發工作量。文檔中心提供大量的接入教程,非常詳細,此處不再重復說明。
機智雲官方文檔中心鏈接:http://docs.gizwits.com/zh-cn/overview/overview.html
步驟一:
我們要將自己的Wi-Fi模組跟機智雲對接,必須對Wi-Fi模組燒錄機智雲官方給的GAgen固件。硬體廠商對硬體智能化的第一步是讓設備能夠聯網,GAgent是機智雲提供的一款兼容國內主流Wi-Fi模塊、移動網路模塊的模組系統。硬體廠商只需理解如何與GAgent進行通訊即可。
詳細教程鏈接地址:http://docs.gizwits.com/zh-cn/GCP/wmole/ESP8266.html#ESP8266
步驟二:
在機智雲平台注冊一個屬於自己的賬號。
1、創建產品
2、創建數據點
3、根據需求選擇MCU開發或者SOC開發。MCU開發就是在51/STM32等單片機開發,代碼可自動生成,不需要懂協議即可開發。SOC開發是指直接在ESP8266上開發。注意:自動生成的代碼,MCU運行環境至少要有2K的RAM左右的大小,如果是普通的51單片機,RAM一般不足1K,STC15系列有2K大小的RAM,STM32基本所有系列RAM大小都超過2K。如果RAM不夠的單片機,就需要自己懂協議,才能開發。協議其實也挺簡單,無非就是一些你發數據包,我解析後回復給你數據,有來桐猜有往。
4、手機安裝機智雲開源的APP,進行調試測試
5、.......
詳細教程:http://docs.gizwits.com/zh-cn/quickstart/UseMCU.html
步驟三:
建議直接使用機智雲封裝好的協議,直接自動生成包含協議相關的代碼,前提是,你得保證你的單片機擁有超過2K的RAM大小空間。如果不滿足RAM大小的單片機,則自己根據協議文檔編寫代碼,通信協議在《開發向導》里下載,如圖下所示。
根據文檔協議寫測試代碼的時候,可以不著急在單片機上測試,機智雲提供了一個串培畝口調試助手,可在這里先測試好。
機智雲機智雲串口工具使用文檔:http://docs.gizwits.com/zh-cn/deviceDev/%E4%B8%B2%E5%8F%A3%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.html
關於單片機上的應用開發,不管開發什麼產品,協議上報數據格式都是固定不變的。遇到問題多看機智雲官方給的教程即可解決絕大部分問題。
❹ 寫程序的軟體有哪些
1.程序軟體免費下載
鏈接:https://pan..com/s/1E6rNlwiYx9wPYqUZuqbnpw
軟體,拼音為Ruǎnjiàn,國標中對軟體的定義為:與計算機系統操作有關的計算機程序、規程、規則,以及可能有的文件、文檔及數據。
❺ 我想要實現單片機: 數碼管每隔1s顯示從0-9怎麼實現 全部代碼。
你要c語言的還是匯編的?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar x); //延時程序
void ds_50ms(void); //50ms定時,中斷程序
void Ptime(uchar); //時間處理函數
void Js_Scan(void); //數碼管掃描函數
sbit S1=P2^4; //置位P2.4為數碼管1控制位
int num=0,m=0; //定義數據類型
//int code LED_Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數碼管掃描數組,共陰極
int code LED_Num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽極
void main(void) //主函數
{
TMOD=0x01; //定義計時器工作類型
TH0=(65535-50000)/256; //定時器高4位初值
TL0=(65535-50000)%256; //定時器低4位初值
EA=1; //開中斷
ET0=1; //開中斷
while(1) //建立死循環
{
Js_Scan(); //調用數碼管掃描函數
TRO=1;
}
}
void ds_50ms(void) interrupt 1 using 1 //50ms定時中斷程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++; //執行累加,直到50ms
Ptime(num); //調用時間處理函數
}
void Ptime(uchar time) //時間處理函數
{
if(time==20) //判斷是否到1000ms,即1秒
{
num=0; //num清零
m++; //m累加
}
if(m==9) //數碼管顯示9時,m清零,重新計數
{
m=0;
}
}
void Js_Scan() //數碼管掃描函數
{
uchar j; //定義j數據類型
for(j=0;j<5;j++) //建立循環
{
S1=1;P0=LED_Num[m];delay(1);S1=0; //掃描顯示位,稍作延時(對於單位數碼管可直接置高置低,此為掃描的寫法,單位不需要延時,不需要寫for循環)
}
}
void delay(uchar x) //延時函數,防止數碼管顯示不穩定
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
這個是共陽極的,共陰極改變數組就行了。。。。 將前面的//刪掉 將後面數組加上// S1=0;S1=1;就行了。
❻ 若51單片機P1口接了8個LED,編寫程序完成跑馬燈程序要求大約1秒變化一次
在設計一個51單片機控制8個LED的跑馬燈程序時,假設晶振頻率為12MHz,P1口用於控制8個LED,採用低電平點亮LED的方式。程序的目標是使得LED每隔大約1秒變化一次,即實現跑馬燈效果。
程序首先配置定時器1,使其工作於方式1,這是一個16位定時器,能夠提供更長的定時范圍。具體配置代碼為:TMOD |= 0X10。接下來設置定時器1的初值,以實現每500微秒的定時周期。TH1和TL1的值分別為0XFE和0X0C,代表定時時間。
為了實現每秒變化一次的跑馬燈效果,程序設置了定時器1中斷服務函數。該函數每500微秒執行一次,通過累加YSJS變數來記錄時間。當YSJS達到2000時,表示已經過去了1秒。此時,P1口的輸出值將根據LED變數的變化來更新,實現LED的跑馬燈效果。
LED變數通過左移操作來實現跑馬燈效果,每次中斷時LED左移一位。當LED變數達到0XFF時,即所有LED都被點亮後,重新將LED設置為0XFE,確保LED可以繼續循環點亮。具體代碼為:LED = LED << 1; LED = LED | 1; 這樣,LED將依次點亮,實現跑馬燈效果。
為了確保定時器1能夠正常工作,程序還設置了定時器1的中斷使能,並開啟總中斷。主函數中使用了一個無限循環,等待定時器1中斷的發生。當定時器1發生中斷時,程序將執行定時器1中斷服務函數,從而實現LED的跑馬燈效果。
通過上述配置和編程,51單片機可以控制8個LED實現跑馬燈效果,每隔大約1秒變化一次,達到預期的效果。