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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2891|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM32壓力計(jì)程序與C#上位機(jī)代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
stm32上位機(jī)壓力計(jì)上位機(jī)源程序


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;   //設(shè)置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("請(qǐng)輸入壓力值");
  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.         //打來畫圖定時(shí)器
  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.             //從數(shù)據(jù)庫讀取數(shù)據(jù)
  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.         //定時(shí)器定時(shí)讀取串口緩沖區(qū)數(shù)據(jù)
  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.                     //上傳到數(shù)據(jù)庫
  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.                     //向下位機(jī)發(fā)送控制命令
  126.                     port1.Write(command, 0, command.Length);

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

  134.         //上傳數(shù)據(jù)庫
  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); //創(chuàng)建OleDbConnection對(duì)象,連接
  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();//關(guān)閉連接
  147.             }
  148.             catch (Exception ee)
  149.             {
  150.                 Debug.WriteLine(ee.ToString());
  151.             }
  152.         }

  153.         //從數(shù)據(jù)庫獲取最新的數(shù)據(jù)
  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); //創(chuàng)建OleDbConnection對(duì)象,連接
  161.                 con.Open();

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

  163.                 OleDbDataAdapter dbDataAdapter = new OleDbDataAdapter(sql, con); //創(chuàng)建適配對(duì)象
  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. }
復(fù)制代碼



單片機(jī)源程序如下:
  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);         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)

  18.         delay_init();                     //延時(shí)函數(shù)初始化          
  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;//得到此次接收到的數(shù)據(jù)長度

  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. }
復(fù)制代碼

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


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:561245 發(fā)表于 2019-6-24 19:45 | 只看該作者
學(xué)習(xí)學(xué)習(xí)~~~~~~~~~~~~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

板凳
ID:558459 發(fā)表于 2019-7-13 13:31 | 只看該作者
學(xué)習(xí)~~~~~~~~~~~~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产美女网站 | 国产偷录叫床高潮录音 | 午夜午夜精品一区二区三区文 | 福利社午夜影院 | 精品久久精品 | 99re在线视频观看 | 97影院在线午夜 | 亚洲欧美中文字幕在线观看 | 国产一区二区在线免费观看 | 亚洲av毛片成人精品 | 久久久精品久 | 精品一区二区三区四区 | 欧美日韩国产在线观看 | 欧美日韩在线观看一区 | 国产精品中文在线 | 国产一区二区三区在线看 | 国产精品久久午夜夜伦鲁鲁 | 中文字幕在线观看一区 | 久久国产高清视频 | 香蕉视频久久久 | 日本一区二区三区四区 | 蜜桃免费av| 国产免费观看视频 | 欧美日韩在线视频一区 | 成年人精品视频 | 久久免费大片 | 免费在线看a | 欧美日韩中 | 国产成人精品久久久 | 日韩欧美一区二区三区免费观看 | 日日夜夜狠狠操 | 一级毛片成人免费看a | 热久久999 | 欧美精品国产一区二区 | 毛片片| 日韩在线免费播放 | 免费一级做a爰片久久毛片潮喷 | 欧美一区二区三区在线观看 | 久久爱综合 | 国产情侣久久 | 国产精品亚洲一区 |