{"id":22920,"date":"2024-03-16T00:30:17","date_gmt":"2024-03-16T00:30:17","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/"},"modified":"2024-03-22T00:01:48","modified_gmt":"2024-03-22T00:01:48","slug":"how-to-send-and-receive-data-through-a-winform-serial-port","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/","title":{"rendered":"How to send and receive data through a WinForm serial port?"},"content":{"rendered":"<p>In WinForm, you can use the SerialPort class for serial communication to send and receive data. Here is a simple example:<\/p>\n<ol>\n<li>Firstly, in the WinForm design view, drag a SerialPort control onto the form.<\/li>\n<li>Add the following code to the code file of the window form:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">using<\/span> System;\r\n<span class=\"hljs-keyword\">using<\/span> System.IO.Ports;\r\n\r\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">SerialPortDemo<\/span>\r\n{\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">partial<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Form1<\/span> : <span class=\"hljs-title\">Form<\/span>\r\n    {\r\n        SerialPort serialPort;\r\n\r\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">Form1<\/span>()<\/span>\r\n        {\r\n            InitializeComponent();\r\n\r\n            <span class=\"hljs-comment\">\/\/ \u521d\u59cb\u5316SerialPort\u5bf9\u8c61<\/span>\r\n            serialPort = <span class=\"hljs-keyword\">new<\/span> SerialPort();\r\n            serialPort.BaudRate = <span class=\"hljs-number\">9600<\/span>; <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u6ce2\u7279\u7387<\/span>\r\n            serialPort.DataBits = <span class=\"hljs-number\">8<\/span>; <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u6570\u636e\u4f4d<\/span>\r\n            serialPort.Parity = Parity.None; <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u5947\u5076\u6821\u9a8c\u4f4d<\/span>\r\n            serialPort.StopBits = StopBits.One; <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u505c\u6b62\u4f4d<\/span>\r\n            serialPort.DataReceived += SerialPort_DataReceived; <span class=\"hljs-comment\">\/\/ \u7ed1\u5b9a\u6570\u636e\u63a5\u6536\u4e8b\u4ef6<\/span>\r\n        }\r\n\r\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Form1_Load<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">object<\/span> sender, EventArgs e<\/span>)<\/span>\r\n        {\r\n            <span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u53ef\u7528\u7684\u4e32\u53e3\u5217\u8868\uff0c\u5e76\u6dfb\u52a0\u5230ComboBox\u63a7\u4ef6\u4e2d<\/span>\r\n            <span class=\"hljs-built_in\">string<\/span>[] ports = SerialPort.GetPortNames();\r\n            comboBox1.Items.AddRange(ports);\r\n        }\r\n\r\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">buttonOpen_Click<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">object<\/span> sender, EventArgs e<\/span>)<\/span>\r\n        {\r\n            <span class=\"hljs-keyword\">if<\/span> (!serialPort.IsOpen)\r\n            {\r\n                <span class=\"hljs-keyword\">try<\/span>\r\n                {\r\n                    serialPort.PortName = comboBox1.SelectedItem.ToString(); <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u4e32\u53e3\u540d\u79f0<\/span>\r\n                    serialPort.Open(); <span class=\"hljs-comment\">\/\/ \u6253\u5f00\u4e32\u53e3<\/span>\r\n                    buttonOpen.Enabled = <span class=\"hljs-literal\">false<\/span>;\r\n                    buttonClose.Enabled = <span class=\"hljs-literal\">true<\/span>;\r\n                }\r\n                <span class=\"hljs-keyword\">catch<\/span> (Exception ex)\r\n                {\r\n                    MessageBox.Show(ex.Message);\r\n                }\r\n            }\r\n        }\r\n\r\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">buttonClose_Click<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">object<\/span> sender, EventArgs e<\/span>)<\/span>\r\n        {\r\n            <span class=\"hljs-keyword\">if<\/span> (serialPort.IsOpen)\r\n            {\r\n                serialPort.Close(); <span class=\"hljs-comment\">\/\/ \u5173\u95ed\u4e32\u53e3<\/span>\r\n                buttonOpen.Enabled = <span class=\"hljs-literal\">true<\/span>;\r\n                buttonClose.Enabled = <span class=\"hljs-literal\">false<\/span>;\r\n            }\r\n        }\r\n\r\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">buttonSend_Click<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">object<\/span> sender, EventArgs e<\/span>)<\/span>\r\n        {\r\n            <span class=\"hljs-keyword\">if<\/span> (serialPort.IsOpen)\r\n            {\r\n                serialPort.Write(textBoxSend.Text); <span class=\"hljs-comment\">\/\/ \u53d1\u9001\u6570\u636e<\/span>\r\n            }\r\n        }\r\n\r\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">SerialPort_DataReceived<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">object<\/span> sender, SerialDataReceivedEventArgs e<\/span>)<\/span>\r\n        {\r\n            <span class=\"hljs-built_in\">string<\/span> data = serialPort.ReadExisting(); <span class=\"hljs-comment\">\/\/ \u8bfb\u53d6\u63a5\u6536\u5230\u7684\u6570\u636e<\/span>\r\n            <span class=\"hljs-comment\">\/\/ \u5728UI\u7ebf\u7a0b\u4e2d\u66f4\u65b0UI\u63a7\u4ef6\u4e0a\u7684\u6570\u636e<\/span>\r\n            Invoke(<span class=\"hljs-keyword\">new<\/span> Action(() =&gt;\r\n            {\r\n                textBoxReceive.Text += data;\r\n            }));\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the example above, we use the SerialPort control to transmit and receive data through a serial port. Upon loading the form, we retrieve a list of available serial ports and add them to a ComboBox control. When the user clicks the &#8220;Open&#8221; button, we open the selected serial port. When the user clicks the &#8220;Close&#8221; button, we close the serial port. When the user clicks the &#8220;Send&#8221; button, we send the text data from the TextBox. When data is received, we use the DataReceived event to read the received data and display it in the TextBox.<\/p>\n<p>It is important to note that the configuration parameters of the serial port (baud rate, data bits, parity bit, stop bits) need to be set according to the actual situation. Additionally, in order to update data on UI controls in the data reception event handler, we use the Invoke method to perform the update operation on the UI thread.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In WinForm, you can use the SerialPort class for serial communication to send and receive data. Here is a simple example: Firstly, in the WinForm design view, drag a SerialPort control onto the form. Add the following code to the code file of the window form: using System; using System.IO.Ports; namespace SerialPortDemo { public partial [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-22920","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to send and receive data through a WinForm serial port? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to send and receive data through a WinForm serial port?\" \/>\n<meta property=\"og:description\" content=\"In WinForm, you can use the SerialPort class for serial communication to send and receive data. Here is a simple example: Firstly, in the WinForm design view, drag a SerialPort control onto the form. Add the following code to the code file of the window form: using System; using System.IO.Ports; namespace SerialPortDemo { public partial [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T00:30:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T00:01:48+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Liam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"How to send and receive data through a WinForm serial port?\",\"datePublished\":\"2024-03-16T00:30:17+00:00\",\"dateModified\":\"2024-03-22T00:01:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\"},\"wordCount\":213,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\",\"name\":\"How to send and receive data through a WinForm serial port? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T00:30:17+00:00\",\"dateModified\":\"2024-03-22T00:01:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to send and receive data through a WinForm serial port?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to send and receive data through a WinForm serial port? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/","og_locale":"en_US","og_type":"article","og_title":"How to send and receive data through a WinForm serial port?","og_description":"In WinForm, you can use the SerialPort class for serial communication to send and receive data. Here is a simple example: Firstly, in the WinForm design view, drag a SerialPort control onto the form. Add the following code to the code file of the window form: using System; using System.IO.Ports; namespace SerialPortDemo { public partial [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T00:30:17+00:00","article_modified_time":"2024-03-22T00:01:48+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"How to send and receive data through a WinForm serial port?","datePublished":"2024-03-16T00:30:17+00:00","dateModified":"2024-03-22T00:01:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/"},"wordCount":213,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/","name":"How to send and receive data through a WinForm serial port? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T00:30:17+00:00","dateModified":"2024-03-22T00:01:48+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-send-and-receive-data-through-a-winform-serial-port\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to send and receive data through a WinForm serial port?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=22920"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22920\/revisions"}],"predecessor-version":[{"id":56868,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22920\/revisions\/56868"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=22920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=22920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=22920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}