㈠ 單片機主從站之間通信如何編程c語言的
主機用一個程序,從機都用同一個程序。但是每個從機應該有一個不同的從機地址。對應某個變數初始化時值不同。
㈡ 通信工程和編程關系大嗎
通信工程需要的編程和軟體工程需要的編程肯定不一樣的,具體的太多,說不清,換種方式說,編程對通信工程來說是一種應用技術,是處理問題的工具,而不是通信工程要研究的對象;而對軟體工程來說,編程就是他們要研究的對象了。通信不學單片機,單片機是電子專業的課程,是一種電子信息技術,不屬於通信工程。單片機最典型的例子就是現在的交通燈自動控制,一般都是單片機編的。而通信主要是通信的原理,信號的傳輸,雜訊的抑制,圖像與聲音的處理,信道等問題。本人通信專業研二學生。
㈢ 學習汽車模塊之間的編程與通訊
汽車電子技術的發展和進步,一般的家用轎車上有數十個電子控制單元,豪華轎車更是達到數百個電子控制單元。汽車生產製造的過程中,同一種電子控制單元用在不同配置的汽車上,需要使用不同的軟體參數。並且出廠之前,需要使用檢測設備與電子控制單元進行通訊(讀取、寫入、控制),以確保電子控制單元內軟體的正確性。
汽車生產廠家需要根據不同汽車、不同的電子控制單元的產品規范進行編程,目前的編程方式為敲代碼,每一個語句由多個代碼組成,編程工作難度大、非專業編程人員無法進行編程工作,且此種方式的編程效率低。
本發明的目的是解決上述的編程難度大、編程效率低的問題。應用可視化編程系統,編程工作簡化成了「填空題」、「選擇題」,即使非專業編程人員也能輕易掌握完成編程工作,且編程效率大幅度提高。
本發明包括以下步驟:
1)在個人電腦的可視化編程系統的後台設置中,將汽車電子控制單元的通訊程序分段切割,每發送或者接受一條指令的語句成為一個塊;傳統編程以語句為最小單位,一個完整的程序語句數萬行;可視化編程以塊為最小單位,一個完整的程序由數十到數百個塊組成;
2)每個塊中,針對不同汽車電子控制單元需要有參數或者指令變化的部分,不賦具體值,以地址名代替;
3)將地址名鏈接至前台界面的單元格,前台界面單元格與後台地址名相互唯一對應;
4)依據汽車電子控制單元的產品規范文件,繪製程序流程圖,將指令與參數變化點整理出來;
5)在可視化編程系統的界面,以填空提、選擇題方式完成參數及指令變化點的輸入;
6)在可視化編程系統的界面,依據整理好的程序流程圖,通過對塊的組合,設置塊與塊之間的運行與跳轉信息,並設置通訊參數;所述的通訊參數為通訊等待時間、通訊波特率等;
7)在可視化編程系統的界面,點擊編程按鈕,系統自動將前台界面的數據通過地址名傳送至後台,在後台完成計算,組合成可執行程序;
8)一個完整的汽車電子控制單元通訊程序編程工作完成,重復上述步驟,完成下一個電子控制單元的通訊程序編程。
附圖說明
圖1為可視化編程系統應用流程圖。
圖2為使用本發明進行某車型制動防抱死電子控制模塊通訊程序流程圖。
圖3為某車型制動防抱死電子控制模塊通訊程序的整理通訊參數及指令變化點電腦界面。
圖4為某車型制動防抱死電子控制模塊通訊程序的可視化編程系統的界面以填空、選擇的方式完成參數與指令變化點的輸入電腦界面。
圖5為某車型制動防抱死電子控制模塊通訊程序的系統自動完成後台程序運行、生成可執行程序、編程工作完成電腦界面。
具體實施方式
如圖1所示,本發明包括以下步驟:
1)在個人電腦的可視化編程系統的後台設置中,將汽車電子控制單元的通訊程序分段切割,每發送或者接受一條指令的語句成為一個塊;傳統編程以語句為最小單位,一個完整的程序語句數萬行;可視化編程以塊為最小單位,一個完整的程序由數十到數百個塊組成;
2)每個塊中,針對不同汽車電子控制單元需要有參數或者指令變化的部分,不賦具體值,以地址名代替;
3)將地址名鏈接至前台界面的單元格,前台界面單元格與後台地址名相互唯一對應;
4)依據汽車電子控制單元的產品規範文件,繪製程序流程圖,將指令與參數變化點整理出來;
5)在可視化編程系統的界面,以填空提、選擇題方式完成參數及指令變化點的輸入;
6)在可視化編程系統的界面,依據整理好的程序流程圖,通過對塊的組合,設置塊與塊之間的運行與跳轉信息,並設置通訊參數;所述的通訊參數為通訊等待時間、通訊波特率等;
7)在可視化編程系統的界面,點擊編程按鈕,系統自動將前台界面的數據通過地址名傳送至後台,在後台完成計算,組合成可執行程序;
8)一個完整的汽車電子控制單元通訊程序編程工作完成,重復上述步驟,完成下一個電子控制單元的通訊程序編程。
使用可視化編程系統進行某車型制動防抱死電子控制模塊通訊程序開發,實施步驟:
1)依據產品文件,繪製程序流程圖,見圖2;
2)依據產品文件,整理通訊參數及指令變化點,見圖3;
3)在可視化編程系統的界面以填空、選擇的方式完成參數與指令變化點的輸入,見圖4;
4)依據流程圖,對前台指令(對應後台程序塊)進行組合、設置通訊參數,見圖4;
5)點擊編程按鈕,系統自動完成後台程序運行,生成可執行程序,編程工作完成。見圖5。
以上為編程全過程,相比傳統的敲代碼編程,編程難度大幅度降低,技術不是專業的軟體技術人員,也能輕松完成編程工作。同時,此種編程方式,大幅節省了編程時間,提高了編程效率。
本發明公開了一種汽車電子控制單元通訊程序的可視化編程方法。該編程方法,包括一台個人電腦、可視化編程系統。其中,個人電腦用於運行可視化編程系統、存儲數據。可視化編程系統用於實現參數的輸入、程序指令的生成及組合、並自動生成可執行的程序文件。通過可視化編程系統,將傳統編程的敲代碼工作變成了填空及選擇題,極大簡化了編程的難度,並顯著提升了編程效率。
以前寫的,照貼了。。。伺服器端:import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;/*6、 採用UDP協議,編寫一個Java網路應用程序,該應用分伺服器端程序和客戶端程序兩部分。
* 客戶端指定一個伺服器上的文件名,讓伺服器發回該文件的內容,或者提示文件不存在。
* (20分)(服務端程序和客戶端程序分別命名為Server.java和Client.java)*/
public class N4BT6 extends Frame
{
DatagramSocket socket ;
DatagramPacket packet ;byte[] buf ;
File file ;
FileInputStream input;
String message = "該文件不存在";
TextArea text;
public N4BT6(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
buf = new byte[1024];
try
{
socket = new DatagramSocket(1230);
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
file = new File(new String(packet.getData()));
socket = new DatagramSocket();
}
catch (Exception e)
{e.printStackTrace();
}
if(file.exists())
{
try
{
buf = new byte[(int)file.length()];
packet = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);
input = new FileInputStream(file);
input.read(buf);
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
}
else
{
try
{
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1234);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
new N4BT6("Server");
}
}
客戶端:import java.awt.*;
import java.awt.event.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class N4BT6_2 extends Frame
{
TextArea text;
String message = "Q.txt";
DatagramSocket socket ;
DatagramPacket packet;
byte[] buf;
public N4BT6_2(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
try
{
socket = new DatagramSocket();
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1230);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
buf = new byte[1024];
socket = new DatagramSocket(1234);
packet = new DatagramPacket(buf,buf.length);
socket.receive(packet);
text.append(new String(buf));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new N4BT6_2("Client");
}
}