久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2862|回復: 2
打印 上一主題 下一主題
收起左側

STM32壓力計程序與C#上位機代碼

[復制鏈接]
跳轉到指定樓層
樓主
stm32上位機壓力計上位機源程序


C#源程序:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Diagnostics;
  10. using Microsoft.Win32;
  11. using System.Text.RegularExpressions;
  12. using System.Data.SqlClient;
  13. using System.Threading;
  14. using System.Data.OleDb;
  15. using System.Windows.Forms.DataVisualization.Charting;
  16. using System.IO.Ports;//

  17. namespace coursedesign
  18. {
  19.     public partial class Form1 : Form
  20.     {
  21.         const float high =1700;
  22.         const float low =1400;

  23.         double[] data = new double[50];
  24.         Series ss = new Series("壓力");

  25.         public SerialPort port1 = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);

  26.         public Form1()
  27.         {
  28.             InitializeComponent();
  29.         }

  30.         
  31.         private void Form1_Load(object sender, EventArgs e)
  32.         {
  33.             chart1.Series.Clear();
  34.             ss.ChartType = SeriesChartType.Spline;   //設置Y軸為折線
  35.             chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
  36.         }


  37.         private void button3_Click(object sender, EventArgs e)
  38.         {
  39.             if (textBox2.Text == "")
  40.             {
  41.                 MessageBox.Show("請輸入壓力值");
  42.                 return;
  43.             }

  44.             try
  45.             {
  46.                 float num1 = float.Parse(textBox2.Text);
  47.                 update(num1);
  48.             }
  49.             catch (Exception ee)
  50.             {
  51.                 MessageBox.Show("上傳失敗\n" + ee.ToString());
  52.                 Debug.Write(ee.ToString());
  53.             }            
  54.         }

  55.         //打來畫圖定時器
  56.         private void button4_Click(object sender, EventArgs e)
  57.         {
  58.             timer1.Start();
  59.         }


  60.         //畫圖
  61.         private void timer1_Tick(object sender, EventArgs e)
  62.         {
  63.             //從數據庫讀取數據
  64.             GetRecord();

  65.             //更新曲線
  66.             chart1.Series.Clear();
  67.             ss.Points.DataBindY(data);
  68.             chart1.Series.Add(ss);
  69.         }

  70.         //打開串口
  71.         private void button1_Click(object sender, EventArgs e)
  72.         {
  73.             try
  74.             {
  75.                 port1.Open();
  76.             }
  77.             catch (Exception ee)
  78.             {
  79.                 MessageBox.Show("串口打開失敗\n" + ee.ToString());
  80.             }

  81.             Thread.Sleep(500);
  82.             timer2.Start();
  83.         }

  84.         //定時器定時讀取串口緩沖區數據
  85.         private void timer2_Tick(object sender, EventArgs e)
  86.         {
  87.             if (port1.IsOpen)
  88.             {
  89.                 byte[] data = new byte[0];

  90.                 int iByteLen = port1.BytesToRead;
  91.                 Debug.WriteLine(iByteLen.ToString());

  92.                 try
  93.                 {
  94.                     if (iByteLen > 0)
  95.                     {
  96.                         data = new byte[iByteLen];
  97.                         port1.Read(data, 0, iByteLen);
  98.                     }

  99.                     String received = Encoding.ASCII.GetString(data);
  100.                     Debug.WriteLine(received);
  101.                     textBox1.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "  " + Encoding.ASCII.GetString(data) + "\n");

  102.                     byte[] command = { 0x02, 0x33, 0x3c, 0x0d, 0x0a };
  103.                     string[] sa = received.Split(':');
  104.                     string[] svalue = sa[1].Split(' ');
  105.                     float value = float.Parse(svalue[0]);

  106.                     //上傳到數據庫
  107.                     update(value);

  108.                     Image l1 = Image.FromFile("level1.jpg");
  109.                     Image l2 = Image.FromFile("level2.jpg");
  110.                     Image l3 = Image.FromFile("level3.jpg");

  111.                     if (value > high)
  112.                     {
  113.                         pictureBox2.Image = l1;
  114.                         command[0] = 0x01;

  115.                     }
  116.                     else if (value > low)
  117.                     {
  118.                         pictureBox2.Image = l2;
  119.                     }
  120.                     else
  121.                     {
  122.                         pictureBox2.Image = l3;
  123.                         command[0] = 0x01;
  124.                     }

  125.                     //向下位機發送控制命令
  126.                     port1.Write(command, 0, command.Length);

  127.                 }
  128.                 catch (Exception ee)
  129.                 {
  130.                     Debug.WriteLine(ee.ToString());
  131.                 }
  132.             }
  133.         }

  134.         //上傳數據庫
  135.         private void update(double newv)
  136.         {
  137.             try
  138.             {
  139.                 string reportPath = "temp.accdb";
  140.                 string ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=" + reportPath;
  141.                 OleDbConnection con = new OleDbConnection(ConStr); //創建OleDbConnection對象,連接
  142.                 con.Open();

  143.                 string strSql = "Insert Into temp(yali) Values('" + newv.ToString() + "')";
  144.                 OleDbCommand oleDbCommand = new OleDbCommand(strSql, con);
  145.                 oleDbCommand.ExecuteNonQuery();

  146.                 con.Close();//關閉連接
  147.             }
  148.             catch (Exception ee)
  149.             {
  150.                 Debug.WriteLine(ee.ToString());
  151.             }
  152.         }

  153.         //從數據庫獲取最新的數據
  154.         public void GetRecord()
  155.         {
  156.             try
  157.             {
  158.                 string reportPath = "temp.accdb";
  159.                 string ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=" + reportPath;
  160.                 OleDbConnection con = new OleDbConnection(ConStr); //創建OleDbConnection對象,連接
  161.                 con.Open();

  162.                 string sql = "select top 50 * from temp order by ID desc ";

  163.                 OleDbDataAdapter dbDataAdapter = new OleDbDataAdapter(sql, con); //創建適配對象
  164.                 DataTable dt = new DataTable();
  165.                 dbDataAdapter.Fill(dt);

  166.                 int i = 49;
  167.                 foreach (DataRow item in dt.Rows)
  168.                 {
  169.                     data[i] = double.Parse(item[1].ToString());
  170.                     i--;
  171.                 }

  172.             }
  173.             catch (Exception ee)
  174.             {
  175.                 Debug.WriteLine(ee.ToString());
  176.             }

  177.         }

  178.     }
  179. }
復制代碼



單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "timer.h"
  7. #include "HX711.h"


  8. /********電路連接*****/

  9. //PC1   <---->   Buzzer
  10. //PC4   <---->   SCK
  11. //PC5   <---->   DOUT

  12. int main(void)
  13. {
  14.         u8 dis[30];         
  15.   u8 len;
  16.        
  17.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級

  18.         delay_init();                     //延時函數初始化          
  19.         uart_init(9600);                 //串口初始化為9600
  20.         LED_Init();                                  //初始化與LED連接的硬件接口
  21.         LCD_Init();
  22.         POINT_COLOR=RED;
  23.   LCD_Clear(WHITE);         
  24.         BUZZER_ON();
  25.         delay_ms(2000);
  26.          BUZZER_OFF();
  27.   printf("SUCCESS\n");
  28.        
  29.         Init_HX711pin();
  30.         Get_Maopi();                                //稱毛皮重量
  31.         delay_ms(1000);
  32.         delay_ms(1000);
  33.         Get_Maopi();                                //重新獲取毛皮重量
  34.        
  35.         POINT_COLOR=RED;          
  36.         LCD_ShowString(30,40,200,24,24,"C# & STM32");
  37.         LCD_ShowString(30,70,200,24,24,"Pressure Gauge");  
  38.         POINT_COLOR=BLACK;
  39.         LCD_ShowString(30,110,200,16,16,"Weight(g):");                //
  40.        
  41.         while(1)
  42.         {                                
  43.                
  44.                 Get_Weight();
  45.                
  46.                 LCD_ShowxNum(90,140,Weight_Shiwu,4, 16, 0);
  47.                 printf("Weight:%d g\r\n",Weight_Shiwu); //打印

  48.                
  49.                 delay_ms(700);       
  50.                
  51.                 //接收指令處理
  52.                 if(USART_RX_STA&0x8000)
  53.                 {                                          
  54.                         len=USART_RX_STA&0x3fff;//得到此次接收到的數據長度

  55.                         if(USART_RX_BUF[0] == 0x01)
  56.                         {
  57.                                 BUZZER_ON();
  58.                                 LED_ON();
  59.                         }
  60.                         else
  61.                         {
  62.                                 BUZZER_OFF();
  63.                                 LED_OFF();
  64.                         }
  65.                        
  66.                         USART_RX_STA=0;
  67.                 }

  68.         }
  69. }
復制代碼

所有資料51hei提供下載:
下位機-壓力計.7z (226.99 KB, 下載次數: 26)
coursedesign_1012.zip (206.44 KB, 下載次數: 31)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:561245 發表于 2019-6-24 19:45 | 只看該作者
學習學習~~~~~~~~~~~~~~~~~~~~
回復

使用道具 舉報

板凳
ID:558459 發表于 2019-7-13 13:31 | 只看該作者
學習~~~~~~~~~~~~~~~~~~~~
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久人人爽人人爽人人片av免费 | 亚洲成人午夜在线 | 免费观看一级特黄欧美大片 | 中国美女撒尿txxxxx视频 | 又黄又色 | 蜜臀久久 | 成人网av | 欧美日韩国产一区二区 | 激情网五月天 | 成人午夜免费网站 | 中文字幕在线一区二区三区 | 日韩一级 | 亚洲成人网在线播放 | a看片 | 伊人春色在线观看 | av在线免费观看网址 | 久久精品亚洲精品国产欧美 | 婷婷在线视频 | 365夜爽爽欧美性午夜免费视频 | 欧美成人精品一区二区男人看 | 91精品久久久 | 亚洲成人自拍网 | 91直接看| 精品欧美一区二区精品久久 | 亚洲毛片在线观看 | 一区二区亚洲 | 亚洲精品黑人 | 精品视频一区二区三区在线观看 | 国产高清视频在线 | 伊人99 | 久久国产秒 | 国产精品毛片一区二区在线看 | 国产精品高| 操视频网站 | 亚洲男女激情 | 精品欧美一区二区三区久久久 | 亚洲精品一区二区三区在线 | 国产精品海角社区在线观看 | 欧美日韩国产一区 | 欧美一区二区在线 | 韩国精品一区二区三区 |