├── Serial Comm Tester - V2
├── AutoReplySampleText.txt
├── serial image 2.ico
├── Unicode_characters.txt
├── AutoReplySampleHexadecimal.txt
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── app.manifest
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Program.cs
├── Serial Comm Tester.sln
├── Modulo_256.cs
├── BCC_Calculation.cs
├── Crc32.cs
├── TwosComplement.cs
├── HexChart.cs
├── AboutBox1.cs
├── Crc8.cs
├── HexChart.resx
├── HEX_to_ASCII.txt
├── Serial Comm Tester.csproj
├── HexChart.Designer.cs
├── ChecksumCalc.resx
├── CRC16.cs
├── AboutBox1.Designer.cs
├── Conversion_Table.cs
├── ChecksumCalc.Designer.cs
└── AboutBox1.resx
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── .gitignore
├── README.md
└── LICENSE.txt
/Serial Comm Tester - V2/AutoReplySampleText.txt:
--------------------------------------------------------------------------------
1 | Hello,Hi There
2 | count,123456
3 | what colour is the grass,green of course
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/serial image 2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PhilipMur/Serial-Comm-Tester/HEAD/Serial Comm Tester - V2/serial image 2.ico
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Unicode_characters.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PhilipMur/Serial-Comm-Tester/HEAD/Serial Comm Tester - V2/Unicode_characters.txt
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/AutoReplySampleHexadecimal.txt:
--------------------------------------------------------------------------------
1 | 48656c6c6f,4869205468657265
2 | 636f756e74,313233343536
3 | 7768617420636f6c6f757220697320746865206772617373,677265656e206f6620636f75727365
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace Serial_Comm_Tester
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new Form1());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Serial Comm Tester.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Express 14 for Windows Desktop
4 | VisualStudioVersion = 14.0.25123.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Serial Comm Tester", "Serial Comm Tester.csproj", "{C22AE764-1206-414F-BCD3-AEBFE71C08B1}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {C22AE764-1206-414F-BCD3-AEBFE71C08B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {C22AE764-1206-414F-BCD3-AEBFE71C08B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {C22AE764-1206-414F-BCD3-AEBFE71C08B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {C22AE764-1206-414F-BCD3-AEBFE71C08B1}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Serial_Comm_Tester.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Contribution
2 |
3 | Thank you for considering contribution to the Serial-Comm-Tester Project!
4 | How to contribute?
5 |
6 | It's very simple!
7 |
8 | 1.Fork the project
9 | 2.Make the changes
10 | 3.Issue a pull request
11 | 4.I will do a merge after verifying (in some cases changing) the code
12 |
13 | How to report bugs?
14 |
15 | You can simply use the Issues section on github
16 | Just write an issue, and i will try to respond within 24 hours!
17 | How to contribute? (without writing code)
18 |
19 | You can also do this on the Issues section, and i will label it as enhancement
20 | This way you can suggest new features, or change an older one without coding.
21 | I will try to respond within 24 hours!
22 | How to run / compile
23 |
24 | I use Visual Studio 2017 Community Edition or Visual Studio 2015 Express for Windows Desktop.
25 | The project is in c#, built with .NET Framework 4.5
26 |
27 | How to ask questions?
28 |
29 | You can also use the Issues section on GitHub, i will assign a label to it, so it's different from bugs.
30 | I will try to respond within 24 hours!
31 | You can also contact me at [My Youtube Channel](https://www.youtube.com/channel/UCAnWN8gy4oA1YbA9m8aVZ4Q)
32 | Either a comment on the video about the topic, or a message at the Discussion section on my channel page
33 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Modulo_256.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 | using System;
26 | using System.Collections.Generic;
27 | using System.Linq;
28 | using System.Text;
29 | using System.Threading.Tasks;
30 |
31 | namespace Serial_Comm_Tester
32 | {
33 | public class Modulo_256
34 | {
35 |
36 | //cheksum8 Modulo 256
37 | public string GetModulo256(byte[] data)
38 | {
39 | int checksum = 0;
40 | foreach (byte chData in data)
41 | {
42 | checksum += chData;
43 | }
44 | checksum &= 0xff;
45 |
46 |
47 | return checksum.ToString("X2");
48 | }
49 |
50 | public byte[] HexToBytes(string input)
51 | {
52 | StringBuilder sb = new StringBuilder(input); //---get rid of null or white space
53 | sb.Replace(" ", "");
54 | sb.Replace(" ", "");
55 | input = sb.ToString();
56 |
57 | byte[] result = new byte[input.Length / 2];
58 | for (int i = 0; i < result.Length; i++)
59 | {
60 | result[i] = Convert.ToByte(input.Substring(2 * i, 2), 16);
61 | }
62 | return result;
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/BCC_Calculation.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 |
26 | using System;
27 | using System.Collections.Generic;
28 | using System.Linq;
29 | using System.Text;
30 | using System.Threading.Tasks;
31 |
32 | namespace Serial_Comm_Tester
33 | {
34 | public class BCC_Calculation
35 | {
36 | ///
37 | /// Takes in a byte array and gives bacl the Block Check Character
38 | ///
39 | ///
40 | ///
41 | public string GetBCC(byte[] inputStream)
42 | {
43 | byte bcc = 0;
44 | int numOut = 0;
45 |
46 | if (inputStream != null && inputStream.Length > 0)
47 | {
48 |
49 | for (int i = 0; i < inputStream.Length; i++)
50 | {
51 | bcc ^= inputStream[i];
52 | }
53 | }
54 |
55 | numOut = bcc;
56 |
57 | return numOut.ToString("X2");
58 | }
59 | public byte[] HexToBytes(string input)
60 | {
61 | StringBuilder sb = new StringBuilder(input); //---get rid of null or white space
62 | sb.Replace(" ", "");
63 | sb.Replace(" ", "");
64 | input = sb.ToString();
65 |
66 | byte[] result = new byte[input.Length / 2];
67 | for (int i = 0; i < result.Length; i++)
68 | {
69 | result[i] = Convert.ToByte(input.Substring(2 * i, 2), 16);
70 | }
71 | return result;
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Serial Comm Tester")]
9 | [assembly: AssemblyDescription("This Program allows users to test hardware like RS232-USB for functionality \"Join Tx to Rx \" for an internal loop test or " +
10 | "test com port settings between devices or trouble shooting hardware and software. >> Open this program twice to send / receive from 2 com ports on the same computer/device. <<" +
11 | "\r\n" + "\r\n" + "If one of these options (\"Auto Read Bytes To Hex or Auto Read Bytes To Decimal or Auto Read \") are checked the current serial data will only be sent to that option. " +
12 | "\r\n" + "\r\n" + "If (\" Request To Send or Request To Send XOnXOff \") is selected then \"Clear To Send \" button should be \"ON\" to send data." +
13 | "\r\n" + "\r\n" + "This Serial Comm Tester is capable of reading a possible 1,112,064 characters in ASCII / UNICODE ( up to , UTF-16)8-bit enviroments and 0-255 7 bit enviroments"
14 | + " , Although not all characters will be displayed but the U+ (Unicode) number will be given and Hex and Dec equivalent to the Received Bytes."
15 | + "\r\n" + "\r\n" + " New features added :- Manual save also added , Automatic Logging is now added, Visual graph added, change Font Size added, Sending hex and Decimal values through the comport is now possible ,"
16 | + "Conversion Tables :- HEX to DEC / HEX to ASCII etc... ALSO Reference Charts : Hex chart and Unicode chart. Function to verify and calculate CRC Checksums 8bit , 16bit , 32bit. ")]
17 | [assembly: AssemblyConfiguration("")]
18 | [assembly: AssemblyCompany("Created by: Philip Murray")]
19 | [assembly: AssemblyProduct("Serial Comm Tester")]
20 | [assembly: AssemblyCopyright("Copyright © Philip Murray All Rights Reserved 2020")]
21 | [assembly: AssemblyTrademark("")]
22 | [assembly: AssemblyCulture("")]
23 |
24 | // Setting ComVisible to false makes the types in this assembly not visible
25 | // to COM components. If you need to access a type in this assembly from
26 | // COM, set the ComVisible attribute to true on that type.
27 | [assembly: ComVisible(false)]
28 |
29 | // The following GUID is for the ID of the typelib if this project is exposed to COM
30 | [assembly: Guid("c22ae764-1206-414f-bcd3-aebfe71c08b1")]
31 |
32 | // Version information for an assembly consists of the following four values:
33 | //
34 | // Major Version
35 | // Minor Version
36 | // Build Number
37 | // Revision
38 | //
39 | // You can specify all the values or you can default the Build and Revision Numbers
40 | // by using the '*' as shown below:
41 | // [assembly: AssemblyVersion("1.0.*")]
42 | [assembly: AssemblyVersion("3.4.0.16")]
43 | [assembly: AssemblyFileVersion("3.4.0.16")]
44 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6 |
7 | ## Our Standards
8 |
9 | Examples of behavior that contributes to creating a positive environment include:
10 |
11 | * Using welcoming and inclusive language
12 | * Being respectful of differing viewpoints and experiences
13 | * Gracefully accepting constructive criticism
14 | * Focusing on what is best for the community
15 | * Showing empathy towards other community members
16 |
17 | Examples of unacceptable behavior by participants include:
18 |
19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances
20 | * Trolling, insulting/derogatory comments, and personal or political attacks
21 | * Public or private harassment
22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission
23 | * Other conduct which could reasonably be considered inappropriate in a professional setting
24 |
25 | ## Our Responsibilities
26 |
27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28 |
29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
30 |
31 | ## Scope
32 |
33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
34 |
35 | ## Enforcement
36 |
37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [My Youtube Channel](https://www.youtube.com/channel/UCAnWN8gy4oA1YbA9m8aVZ4Q) The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38 |
39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40 |
41 | ## Attribution
42 |
43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
44 |
45 | [homepage]: http://contributor-covenant.org
46 | [version]: http://contributor-covenant.org/version/1/4/
47 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Crc32.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 | using System;
26 | using System.Collections.Generic;
27 | using System.Text;
28 |
29 | namespace Serial_Comm_Tester
30 | {
31 |
32 | public class Crc32
33 | {
34 | public static uint[] table = new uint[256];
35 |
36 | public static uint poly = 0xedb88320;
37 | // public static uint poly = 0x1EDC6F41;
38 | // public ushort initialValue;
39 |
40 | public static uint ComputeChecksum(byte[] bytes)
41 | {
42 | uint crc = 0xffffffff;
43 | for (int i = 0; i < bytes.Length; ++i)
44 | {
45 | byte index = (byte)(((crc) & 0xffffffff) ^ bytes[i]);
46 | crc = (crc >> 8) ^ table[index];
47 | }
48 | return ~crc;
49 | }
50 |
51 | public static byte[] ComputeChecksumBytes(byte[] bytes)
52 | {
53 | return BitConverter.GetBytes(ComputeChecksum(bytes));
54 | }
55 |
56 | public Crc32(uint Poly)
57 | {
58 | // uint poly = 0xedb88320;
59 | // uint poly;
60 | poly = Poly;
61 |
62 | // table = new uint[256];
63 |
64 | uint temp = 0;
65 | for (uint i = 0; i < table.Length; ++i)
66 | {
67 | temp = i;
68 | for (int j = 8; j > 0; --j)
69 | {
70 | if ((temp & 1) == 1)
71 | {
72 | temp = (uint)((temp >> 1) ^ poly);
73 | }
74 | else
75 | {
76 | temp >>= 1;
77 | }
78 | }
79 | table[i] = temp;
80 | }
81 | }
82 | public byte[] HexToBytes(string input)
83 | {
84 | //StringBuilder sb = new StringBuilder(input); //---get rid of null or white space
85 | //sb.Replace(" ", "");
86 | //sb.Replace(" ", "");
87 | //input = sb.ToString();
88 |
89 | byte[] result = new byte[input.Length / 2];
90 | for (int i = 0; i < result.Length; i++)
91 | {
92 | result[i] = Convert.ToByte(input.Substring(2 * i, 2), 16);
93 | }
94 | return result;
95 | }
96 | }
97 | }
98 |
99 |
100 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/TwosComplement.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 | using System;
26 | using System.Collections.Generic;
27 | using System.Linq;
28 | using System.Text;
29 | using System.Threading.Tasks;
30 |
31 | namespace Serial_Comm_Tester
32 | {
33 | public class TwosComplement
34 | {
35 | ///
36 | /// Takes byte data in and Gives back 2s complemet 8 bit by modulus( 0xff / 255)
37 | ///
38 | ///
39 | ///
40 | public string TwosComplement8bit(byte[] data)
41 | {
42 | byte bytesIn = 0;
43 |
44 | int numOut = 0;
45 |
46 |
47 |
48 | unchecked
49 | {
50 | for (int i = 0; i < data.Length; i++)
51 | {
52 | bytesIn = data[i];
53 |
54 | numOut += ~bytesIn + 0x01 % 0xff;
55 |
56 | }
57 |
58 | }
59 |
60 | numOut = numOut & 255;
61 |
62 | return numOut.ToString("X2");
63 | }
64 | ///
65 | /// Takes byte data in and Gives back 2s complemet 16 bit by modulus( 0xffff / 65535)
66 | ///
67 | ///
68 | ///
69 | public string TwosComplement16bit(byte[] data)
70 | {
71 | byte bytesIn = 0;
72 |
73 | int numOut = 0;
74 |
75 |
76 |
77 | unchecked
78 | {
79 | for (int i = 0; i < data.Length; i++)
80 | {
81 | bytesIn = data[i];
82 |
83 | numOut += ~bytesIn + 0x01 % 0xffff;
84 |
85 | }
86 |
87 | }
88 |
89 | numOut = numOut & 65535;
90 |
91 | return numOut.ToString("X2");
92 | }
93 |
94 | public byte[] HexToBytes(string input)
95 | {
96 | StringBuilder sb = new StringBuilder(input); //---get rid of null or white space
97 | sb.Replace(" ", "");
98 | sb.Replace(" ", "");
99 | input = sb.ToString();
100 |
101 | byte[] result = new byte[input.Length / 2];
102 | for (int i = 0; i < result.Length; i++)
103 | {
104 | result[i] = Convert.ToByte(input.Substring(2 * i, 2), 16);
105 | }
106 | return result;
107 | }
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Properties/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
48 |
55 |
56 |
70 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/HexChart.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 | using System;
26 | using System.Windows.Forms;
27 |
28 | namespace Serial_Comm_Tester
29 | {
30 | public partial class HexChart : Form
31 | {
32 | public static string StartupPath { get; }
33 | public HexChart()
34 | {
35 | InitializeComponent();
36 | }
37 |
38 | private void btnHexChart_Click(object sender, EventArgs e)
39 | {
40 | richTextBox1.Text = "";
41 | // const string app = Application.StartupPath();
42 |
43 | // using (StreamReader sr = new StreamReader(Application.StartupPath + "\\" + "HEX_to_ASCII.txt"))
44 |
45 | try
46 | {
47 | richTextBox1.Text = Properties.Resources.HEX_to_ASCII;
48 |
49 |
50 | }
51 | catch
52 | {
53 |
54 | MessageBox.Show( "File missing or wrong directory" , "ERROR",MessageBoxButtons.OK,MessageBoxIcon.Error);
55 | }
56 |
57 |
58 |
59 | }
60 |
61 | private void btnExit_Click(object sender, EventArgs e)
62 | {
63 | Close();
64 | }
65 |
66 | private void btnUnicodeChart_Click(object sender, EventArgs e)
67 | {
68 | richTextBox1.Text = "";
69 |
70 | try
71 | {
72 | richTextBox1.Text = Properties.Resources.Unicode_characters;
73 |
74 | }
75 | catch
76 | {
77 | MessageBox.Show("File missing or wrong directory", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
78 |
79 | }
80 |
81 |
82 | }
83 |
84 | private void contextMenuStrip1_Opening(object sender, System.ComponentModel.CancelEventArgs e)
85 | {
86 |
87 | }
88 |
89 | private void contextMenuStrip1_Click(object sender, EventArgs e)
90 | {
91 |
92 |
93 | }
94 |
95 | private void copySelectedToolStripMenuItem_Click(object sender, EventArgs e)
96 | {
97 | if (richTextBox1.SelectedText == "" && richTextBox1.Text != "")
98 | {
99 | Clipboard.SetText(richTextBox1.Text);
100 | }
101 |
102 | if (richTextBox1.SelectedText != "")
103 | {
104 | Clipboard.SetText(richTextBox1.SelectedText);
105 | }
106 |
107 | }
108 |
109 | private void checkBoxBringToFront_CheckedChanged(object sender, EventArgs e)
110 | {
111 | if(checkBoxBringToFront.Checked == true)
112 | {
113 | TopMost = true;
114 | }
115 | if (checkBoxBringToFront.Checked == false)
116 | {
117 | TopMost = false;
118 | }
119 | }
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/AboutBox1.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using System.Windows.Forms;
4 |
5 | namespace Serial_Comm_Tester
6 | {
7 | partial class AboutBox1 : Form
8 | {
9 | public AboutBox1()
10 | {
11 | InitializeComponent();
12 | this.Text = String.Format("About {0}", AssemblyTitle);
13 | this.labelProductName.Text = AssemblyProduct;
14 | this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
15 | this.labelCopyright.Text = AssemblyCopyright;
16 | this.labelCompanyName.Text = AssemblyCompany;
17 | this.textBoxDescription.Text = AssemblyDescription;
18 | }
19 |
20 | #region Assembly Attribute Accessors
21 |
22 | public string AssemblyTitle
23 | {
24 | get
25 | {
26 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
27 | if (attributes.Length > 0)
28 | {
29 | AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
30 | if (titleAttribute.Title != "")
31 | {
32 | return titleAttribute.Title;
33 | }
34 | }
35 | return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
36 | }
37 | }
38 |
39 | public string AssemblyVersion
40 | {
41 | get
42 | {
43 | return Assembly.GetExecutingAssembly().GetName().Version.ToString();
44 | }
45 | }
46 |
47 | public string AssemblyDescription
48 | {
49 | get
50 | {
51 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
52 | if (attributes.Length == 0)
53 | {
54 | return "";
55 | }
56 | return ((AssemblyDescriptionAttribute)attributes[0]).Description;
57 | }
58 | }
59 |
60 | public string AssemblyProduct
61 | {
62 | get
63 | {
64 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
65 | if (attributes.Length == 0)
66 | {
67 | return "";
68 | }
69 | return ((AssemblyProductAttribute)attributes[0]).Product;
70 | }
71 | }
72 |
73 | public string AssemblyCopyright
74 | {
75 | get
76 | {
77 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
78 | if (attributes.Length == 0)
79 | {
80 | return "";
81 | }
82 | return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
83 | }
84 | }
85 |
86 | public string AssemblyCompany
87 | {
88 | get
89 | {
90 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
91 | if (attributes.Length == 0)
92 | {
93 | return "";
94 | }
95 | return ((AssemblyCompanyAttribute)attributes[0]).Company;
96 | }
97 | }
98 | #endregion
99 |
100 | private void labelCopyright_Click(object sender, EventArgs e)
101 | {
102 |
103 | }
104 |
105 | private void textBoxDescription_TextChanged(object sender, EventArgs e)
106 | {
107 |
108 | }
109 |
110 | private void AboutBox1_Load(object sender, EventArgs e)
111 | {
112 |
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Crc8.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 | using System;
26 | using System.Text;
27 |
28 | namespace Serial_Comm_Tester
29 | {
30 |
31 | public class Crc8
32 | {
33 | public byte poly;
34 |
35 |
36 | static byte[] table = new byte[256];
37 | // x8 + x7 + x6 + x4 + x2 + 1
38 | //public const byte poly = 0xD5;
39 |
40 | // const byte poly = 0x7;
41 | //const byte poly = 0xea;
42 | //public enum CRC8_POLY
43 | //{
44 | // CRC8 = 0xd5,
45 | // CRC8_CCITT = 0x07,
46 | // CRC8_DALLAS_MAXIM = 0x31,
47 | // CRC8_SAE_J1850 = 0x1D,
48 | // CRC_8_WCDMA = 0x9b,
49 | //};
50 |
51 |
52 |
53 |
54 | public byte ComputeChecksum( byte[] bytes)
55 | {
56 | // ChecksumCalc c = new ChecksumCalc();
57 | // poly = c.getpolynominal;
58 |
59 | byte crc = 0x00;
60 | if (bytes != null && bytes.Length > 0)
61 | {
62 | foreach (byte b in bytes)
63 | {
64 | crc = table[crc ^ b];
65 | }
66 | }
67 | return crc;
68 | }
69 |
70 | public Crc8(byte Poly)
71 | {
72 | poly = Poly;
73 |
74 | for (int i = 0; i < 256; ++i)
75 | {
76 | int temp = i;
77 | for (int j = 0; j < 8; ++j)
78 | {
79 | if ((temp & 0x80) != 0)
80 | {
81 | temp = (temp << 1) ^ poly;
82 |
83 | }
84 | else
85 | {
86 | temp <<= 1;
87 | }
88 | }
89 | table[i] = (byte)temp;
90 | }
91 | }
92 | public byte[] HexToBytes(string input)
93 | {
94 | StringBuilder sb = new StringBuilder(input); //---get rid of null or white space
95 | sb.Replace(" ", "");
96 | sb.Replace(" ", "");
97 | input = sb.ToString();
98 |
99 | //// string input = "hello world";
100 | // char[] inputarray = input.ToCharArray();
101 | // Array.Reverse(inputarray);
102 | // string output = new string(inputarray);
103 |
104 | // byte[] result = new byte[output.Length / 2];
105 | // for (int i = 0; i < result.Length; i++)
106 | // {
107 | // result[i] = Convert.ToByte(output.Substring(2 * i, 2), 16);
108 | // }
109 | // return result;
110 | //byte[] getByte = new byte[input.Length];
111 |
112 | //foreach(char t in input)
113 | //{
114 | // getByte[t] = Convert.ToByte(t);
115 | //}
116 | //return getByte;
117 |
118 | byte[] result = new byte[input.Length / 2]; //------------------------------------14/7/17
119 | for (int i = 0; i < result.Length; i++)
120 | {
121 | result[i] = Convert.ToByte(input.Substring(2 * i, 2), 16);
122 | }
123 | return result;
124 | }
125 | //public ushort Reflect16(ushort val)
126 | //{
127 | // ushort resVal = 0;
128 |
129 | // for (ushort i = 0; i < 8; i++)
130 | // {
131 | // if ((val & (1 << i)) != 0)
132 | // {
133 | // resVal |= (ushort)(1 << (15 - i));
134 | // }
135 | // }
136 |
137 | // return resVal;
138 | //}
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Serial_Comm_Tester.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Serial_Comm_Tester.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to ASCII control characters
65 | ///
66 | ///
67 | ///Dec Hex Binary Character Description
68 | ///
69 | ///0 00 00000000 NUL null
70 | ///1 01 00000001 SOH start of header
71 | ///2 02 00000010 STX start of text
72 | ///3 03 00000011 ETX end of text
73 | ///4 04 00000100 EOT end of transmission
74 | ///5 05 00000101 ENQ enquiry
75 | ///6 06 00000110 ACK acknowledge
76 | ///7 07 00000111 BEL bell
77 | ///8 08 00001000 BS backspace
78 | ///9 09 00001001 HT horizontal tab
79 | ///10 0A 00001010 LF line feed
80 | ///11 0B 00001011 VT vertical tab
81 | ///12 [rest of string was truncated]";.
82 | ///
83 | internal static string HEX_to_ASCII {
84 | get {
85 | return ResourceManager.GetString("HEX_to_ASCII", resourceCulture);
86 | }
87 | }
88 |
89 | ///
90 | /// Looks up a localized string similar to THIS IS ONLY SOME UNICODE CHARACTERS AS EXAMPLE:
91 | ///
92 | ///Symbols codes
93 | ///& • ◦ ∙ ‣ ⁃ ° ∞
94 | ///
95 | ///Currency codes
96 | /// $ ₨ ₱ ₩ ฿ ₫ ₪
97 | ///
98 | ///Intellectual property codes
99 | ///© ® ℗ ™ ℠
100 | ///
101 | ///Greek alphabet codes
102 | ///α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
103 | ///
104 | ///
105 | ///
106 | /// ! " # $ % & ' ( ) * + , - . /
107 | ///0 1 2 3 4 5 6 7 8 9 : ; < = > ?
108 | ///@ A B C D E F G H I J K L M N O
109 | ///P Q R S T U V W X Y Z [ \ ] ^ _
110 | ///` a b c d e f g h i j k [rest of string was truncated]";.
111 | ///
112 | internal static string Unicode_characters {
113 | get {
114 | return ResourceManager.GetString("Unicode_characters", resourceCulture);
115 | }
116 | }
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Build results
16 | [Dd]ebug/
17 | [Dd]ebugPublic/
18 | [Rr]elease/
19 | [Rr]eleases/
20 | x64/
21 | x86/
22 | bld/
23 | [Bb]in/
24 | [Oo]bj/
25 | [Ll]og/
26 |
27 | # Visual Studio 2015 cache/options directory
28 | .vs/
29 | # Uncomment if you have tasks that create the project's static files in wwwroot
30 | #wwwroot/
31 |
32 | # MSTest test Results
33 | [Tt]est[Rr]esult*/
34 | [Bb]uild[Ll]og.*
35 |
36 | # NUNIT
37 | *.VisualState.xml
38 | TestResult.xml
39 |
40 | # Build Results of an ATL Project
41 | [Dd]ebugPS/
42 | [Rr]eleasePS/
43 | dlldata.c
44 |
45 | # .NET Core
46 | project.lock.json
47 | project.fragment.lock.json
48 | artifacts/
49 | **/Properties/launchSettings.json
50 |
51 | *_i.c
52 | *_p.c
53 | *_i.h
54 | *.ilk
55 | *.meta
56 | *.obj
57 | *.pch
58 | *.pdb
59 | *.pgc
60 | *.pgd
61 | *.rsp
62 | *.sbr
63 | *.tlb
64 | *.tli
65 | *.tlh
66 | *.tmp
67 | *.tmp_proj
68 | *.log
69 | *.vspscc
70 | *.vssscc
71 | .builds
72 | *.pidb
73 | *.svclog
74 | *.scc
75 |
76 | # Chutzpah Test files
77 | _Chutzpah*
78 |
79 | # Visual C++ cache files
80 | ipch/
81 | *.aps
82 | *.ncb
83 | *.opendb
84 | *.opensdf
85 | *.sdf
86 | *.cachefile
87 | *.VC.db
88 | *.VC.VC.opendb
89 |
90 | # Visual Studio profiler
91 | *.psess
92 | *.vsp
93 | *.vspx
94 | *.sap
95 |
96 | # TFS 2012 Local Workspace
97 | $tf/
98 |
99 | # Guidance Automation Toolkit
100 | *.gpState
101 |
102 | # ReSharper is a .NET coding add-in
103 | _ReSharper*/
104 | *.[Rr]e[Ss]harper
105 | *.DotSettings.user
106 |
107 | # JustCode is a .NET coding add-in
108 | .JustCode
109 |
110 | # TeamCity is a build add-in
111 | _TeamCity*
112 |
113 | # DotCover is a Code Coverage Tool
114 | *.dotCover
115 |
116 | # Visual Studio code coverage results
117 | *.coverage
118 | *.coveragexml
119 |
120 | # NCrunch
121 | _NCrunch_*
122 | .*crunch*.local.xml
123 | nCrunchTemp_*
124 |
125 | # MightyMoose
126 | *.mm.*
127 | AutoTest.Net/
128 |
129 | # Web workbench (sass)
130 | .sass-cache/
131 |
132 | # Installshield output folder
133 | [Ee]xpress/
134 |
135 | # DocProject is a documentation generator add-in
136 | DocProject/buildhelp/
137 | DocProject/Help/*.HxT
138 | DocProject/Help/*.HxC
139 | DocProject/Help/*.hhc
140 | DocProject/Help/*.hhk
141 | DocProject/Help/*.hhp
142 | DocProject/Help/Html2
143 | DocProject/Help/html
144 |
145 | # Click-Once directory
146 | publish/
147 |
148 | # Publish Web Output
149 | *.[Pp]ublish.xml
150 | *.azurePubxml
151 | # TODO: Comment the next line if you want to checkin your web deploy settings
152 | # but database connection strings (with potential passwords) will be unencrypted
153 | *.pubxml
154 | *.publishproj
155 |
156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
157 | # checkin your Azure Web App publish settings, but sensitive information contained
158 | # in these scripts will be unencrypted
159 | PublishScripts/
160 |
161 | # NuGet Packages
162 | *.nupkg
163 | # The packages folder can be ignored because of Package Restore
164 | **/packages/*
165 | # except build/, which is used as an MSBuild target.
166 | !**/packages/build/
167 | # Uncomment if necessary however generally it will be regenerated when needed
168 | #!**/packages/repositories.config
169 | # NuGet v3's project.json files produces more ignorable files
170 | *.nuget.props
171 | *.nuget.targets
172 |
173 | # Microsoft Azure Build Output
174 | csx/
175 | *.build.csdef
176 |
177 | # Microsoft Azure Emulator
178 | ecf/
179 | rcf/
180 |
181 | # Windows Store app package directories and files
182 | AppPackages/
183 | BundleArtifacts/
184 | Package.StoreAssociation.xml
185 | _pkginfo.txt
186 |
187 | # Visual Studio cache files
188 | # files ending in .cache can be ignored
189 | *.[Cc]ache
190 | # but keep track of directories ending in .cache
191 | !*.[Cc]ache/
192 |
193 | # Others
194 | ClientBin/
195 | ~$*
196 | *~
197 | *.dbmdl
198 | *.dbproj.schemaview
199 | *.jfm
200 | *.pfx
201 | *.publishsettings
202 | orleans.codegen.cs
203 |
204 | # Since there are multiple workflows, uncomment next line to ignore bower_components
205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
206 | #bower_components/
207 |
208 | # RIA/Silverlight projects
209 | Generated_Code/
210 |
211 | # Backup & report files from converting an old project file
212 | # to a newer Visual Studio version. Backup files are not needed,
213 | # because we have git ;-)
214 | _UpgradeReport_Files/
215 | Backup*/
216 | UpgradeLog*.XML
217 | UpgradeLog*.htm
218 |
219 | # SQL Server files
220 | *.mdf
221 | *.ldf
222 | *.ndf
223 |
224 | # Business Intelligence projects
225 | *.rdl.data
226 | *.bim.layout
227 | *.bim_*.settings
228 |
229 | # Microsoft Fakes
230 | FakesAssemblies/
231 |
232 | # GhostDoc plugin setting file
233 | *.GhostDoc.xml
234 |
235 | # Node.js Tools for Visual Studio
236 | .ntvs_analysis.dat
237 | node_modules/
238 |
239 | # Typescript v1 declaration files
240 | typings/
241 |
242 | # Visual Studio 6 build log
243 | *.plg
244 |
245 | # Visual Studio 6 workspace options file
246 | *.opt
247 |
248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
249 | *.vbw
250 |
251 | # Visual Studio LightSwitch build output
252 | **/*.HTMLClient/GeneratedArtifacts
253 | **/*.DesktopClient/GeneratedArtifacts
254 | **/*.DesktopClient/ModelManifest.xml
255 | **/*.Server/GeneratedArtifacts
256 | **/*.Server/ModelManifest.xml
257 | _Pvt_Extensions
258 |
259 | # Paket dependency manager
260 | .paket/paket.exe
261 | paket-files/
262 |
263 | # FAKE - F# Make
264 | .fake/
265 |
266 | # JetBrains Rider
267 | .idea/
268 | *.sln.iml
269 |
270 | # CodeRush
271 | .cr/
272 |
273 | # Python Tools for Visual Studio (PTVS)
274 | __pycache__/
275 | *.pyc
276 |
277 | # Cake - Uncomment if you are using it
278 | # tools/**
279 | # !tools/packages.config
280 |
281 | # Telerik's JustMock configuration file
282 | *.jmconfig
283 |
284 | # BizTalk build output
285 | *.btp.cs
286 | *.btm.cs
287 | *.odx.cs
288 | *.xsd.cs
289 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/HexChart.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 72
125 |
126 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\HEX_to_ASCII.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
123 |
124 |
125 | ..\Unicode_characters.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16
126 |
127 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Serial-Comm-Tester
2 | Serial Communications Test Tool written in C# (csharp) .Net (dotNet) Framework in Visual Studio.
3 |
4 | Serial Comm Tester is written by Philip Murray and released under the GPL-V2 License.
5 |
6 | Contributors and collaborators are welcome !!!!!
7 |
8 | This started as a basic Serial communications test tool that i created for when at work to make my life easier working with rs232 , rs485 / serial com ports and to monitor data sent and recieved.
9 |
10 | Alot of other Serial programs are BUGGY as hell so i made my own and added to it over time.
11 |
12 | My Goal is to add features like Modbus , 12c and other protocols or if someone want's to contribute or collaborate i would be very gratefull aswell as everyone knows time is money now and a succesful commit will be added to a changelog.
13 |
14 | This is licensed under the GPL-V2 as to keep any versions of this OPEN-SOURCED and maybe grow into a bigger more comprehensive program and keep it free for all to use and modify as alot of programs like this expect payment.
15 |
16 | # [Download](https://goo.gl/1C23rv)
17 | Current working Software can be downloaded here [Serial-Comm-Tester Download](https://goo.gl/1C23rv)
18 |
19 | # [Usage](https://www.youtube.com/watch?v=0xCK9FXaT0o)
20 | To see a Basic operation of the software click here [My Youtube Channel](https://www.youtube.com/watch?v=0xCK9FXaT0o)
21 |
22 | # Features.....
23 |
24 | 
25 | https://github.com/PhilipMur/Serial-Comm-Tester/wiki
26 |
27 |
28 | 
29 |
30 |
31 |
32 |
33 | # Multi Encodings :
34 |
35 | utf-8
36 | utf-16
37 | utf-16-BigEndian
38 | utf-32
39 | utf-32-BigEndian
40 | us-ASCII
41 | windows-1252
42 | extended-ASCII
43 | IBM-437
44 | iso-8859-1
45 |
46 | # Serial Read/ Write :
47 |
48 | Hexadecimal
49 | Decimal
50 | Encodings listed above
51 |
52 | # Full Serial Port Control.
53 |
54 | > Send To the Serial port from a file.
55 |
56 | > Send with automatic Control characters (Break / carrige return / Line feed or both).
57 |
58 | > Multiple repeat send commands (repeat values and delay fully adjustable).
59 |
60 | > Auto send Keystrokes as typed.
61 |
62 | > Convert text automatically to Hexadecimal and Decimal values.
63 |
64 | > Graph functions ( Set Interval / RX & TX Counter).
65 |
66 | > Find Active Com ports
67 |
68 | 
69 |
70 | # Realtime Serial Port Information :
71 |
72 | RTS
73 | DTR
74 | TX
75 | RX
76 | CD
77 | DSR
78 | CTS
79 | RI
80 | BI
81 | Send Counter
82 | Read Counter
83 |
84 | > Clear In/Out Buffers
85 |
86 | > Manual Control Over (RTS) Ready To Send and (CTS) Clear To Send.
87 |
88 | > Set Font on all Fields.
89 |
90 | > Save To File.
91 |
92 | > Auto Save to file (option to append or overwrite last data).
93 |
94 | 
95 |
96 |
97 | # Conversion Tables :
98 |
99 | Ascii text to Hexadecimal
100 | Ascii text to Decimal
101 | Ascii text to Octal
102 | Ascii text to Binary
103 | Hex to Decimal
104 | Hex to Ascii
105 | Decimal to Hex
106 | Hex Chart
107 | Unicode Chart
108 |
109 | 
110 |
111 | # CRC /Checksum /BCC / Calculator :
112 |
113 | CRC8
114 | CRC8_DVB
115 | CRC8_SAE_J1850
116 |
117 | CRC_16_CCITT_ZERO
118 | CRC_16_XMODEM
119 | CRC_16_CCITT_FALSE
120 | CRC_16_AUG_CCITT
121 | CRC_16_TELEDISK
122 | CRC_16_T10_DIF
123 | CRC_16_DECT_X
124 | CRC_16_DDS_110
125 | CRC_16_CDMA2000
126 | CRC_16_BUYPASS
127 | CRC_16_MODBUS
128 |
129 | CRC_32
130 |
131 | 2s Complement 8 bit
132 | 2s Complement 16 bit
133 |
134 | Modulo 256
135 |
136 | BCC (Block Check Character)
137 |
138 | # Uses In The Real World
139 |
140 | > Test USB To Serail Convertes (loop TX - RX)
141 |
142 | > Check for data Loss
143 |
144 | > Test cables (where cable lenghts maybe an issue etc...).
145 |
146 | # Test communications on devices :
147 |
148 | Arduino
149 | Rasberry Pi
150 | Modems
151 | Embedded Hardware
152 | Printers
153 | RFID
154 | etc...
155 |
156 | # Test different Serial protocols :
157 |
158 | UART Protocol
159 | USART Protocol
160 | USB Protocol
161 | I2C Protocol
162 | SPI Protocol
163 | CAN Protocol
164 | Modbus RTU
165 | Modbus ASCII
166 | LON
167 | Proprietary Protocols
168 |
169 | # Test functions on :
170 |
171 | RS232
172 | RS485
173 | RS422
174 | LON
175 | 1-Wire
176 | I2C
177 | etc...
178 |
179 | > Test CRC / Checksums /BCC and others to verify commands sent and recieved.
180 |
181 | > Use as a Listener on RS485 , 422 etc..
182 |
183 | # Plans for the future
184 |
185 | I wish to add other protocols and additional features , hopefully with the help of Contributors from Github and make this an easy to use , fucntional and comprehesive FREE Serial communcations test tool available .
186 |
187 | This is an essential tool for any developer wanting to Implement a proprietary Protocol or to get a project up and running faster for popular protocols.
188 |
189 | I will update the usage when i get time , i thought i would share this project and see if it can grow further here.
190 |
191 | Happy coding.
192 |
193 | Philip
194 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/HEX_to_ASCII.txt:
--------------------------------------------------------------------------------
1 | ASCII control characters
2 |
3 |
4 | Dec Hex Binary Character Description
5 |
6 | 0 00 00000000 NUL null
7 | 1 01 00000001 SOH start of header
8 | 2 02 00000010 STX start of text
9 | 3 03 00000011 ETX end of text
10 | 4 04 00000100 EOT end of transmission
11 | 5 05 00000101 ENQ enquiry
12 | 6 06 00000110 ACK acknowledge
13 | 7 07 00000111 BEL bell
14 | 8 08 00001000 BS backspace
15 | 9 09 00001001 HT horizontal tab
16 | 10 0A 00001010 LF line feed
17 | 11 0B 00001011 VT vertical tab
18 | 12 0C 00001100 FF form feed
19 | 13 0D 00001101 CR enter / carriage return
20 | 14 0E 00001110 SO shift out
21 | 15 0F 00001111 SI shift in
22 | 16 10 00010000 DLE data link escape
23 | 17 11 00010001 DC1 device control 1
24 | 18 12 00010010 DC2 device control 2
25 | 19 13 00010011 DC3 device control 3
26 | 20 14 00010100 DC4 device control 4
27 | 21 15 00010101 NAK negative acknowledge
28 | 22 16 00010110 SYN synchronize
29 | 23 17 00010111 ETB end of trans. block
30 | 24 18 00011000 CAN cancel
31 | 25 19 00011001 EM end of medium
32 | 26 1A 00011010 SUB substitute
33 | 27 1B 00011011 ESC escape
34 | 28 1C 00011100 FS file separator
35 | 29 1D 00011101 GS group separator
36 | 30 1E 00011110 RS record separator
37 | 31 1F 00011111 US unit separator
38 | 127 7F 01111111 DEL delete
39 |
40 |
41 | ASCII printable characters
42 | Dec Hex Binary Character Description
43 |
44 | 32 20 00100000 Space space
45 | 33 21 00100001 ! exclamation mark
46 | 34 22 00100010 " double quote
47 | 35 23 00100011 # number
48 | 36 24 00100100 $ dollar
49 | 37 25 00100101 % percent
50 | 38 26 00100110 & ampersand
51 | 39 27 00100111 ' single quote
52 | 40 28 00101000 ( left parenthesis
53 | 41 29 00101001 ) right parenthesis
54 | 42 2A 00101010 * asterisk
55 | 43 2B 00101011 + plus
56 | 44 2C 00101100 , comma
57 | 45 2D 00101101 - minus
58 | 46 2E 00101110 . period
59 | 47 2F 00101111 / slash
60 | 48 30 00110000 0 zero
61 | 49 31 00110001 1 one
62 | 50 32 00110010 2 two
63 | 51 33 00110011 3 three
64 | 52 34 00110100 4 four
65 | 53 35 00110101 5 five
66 | 54 36 00110110 6 six
67 | 55 37 00110111 7 seven
68 | 56 38 00111000 8 eight
69 | 57 39 00111001 9 nine
70 | 58 3A 00111010 : colon
71 | 59 3B 00111011 ; semicolon
72 | 60 3C 00111100 < less than
73 | 61 3D 00111101 = equality sign
74 | 62 3E 00111110 > greater than
75 | 63 3F 00111111 ? question mark
76 | 64 40 01000000 @ at sign
77 | 65 41 01000001 A
78 | 66 42 01000010 B
79 | 67 43 01000011 C
80 | 68 44 01000100 D
81 | 69 45 01000101 E
82 | 70 46 01000110 F
83 | 71 47 01000111 G
84 | 72 48 01001000 H
85 | 73 49 01001001 I
86 | 74 4A 01001010 J
87 | 75 4B 01001011 K
88 | 76 4C 01001100 L
89 | 77 4D 01001101 M
90 | 78 4E 01001110 N
91 | 79 4F 01001111 O
92 | 80 50 01010000 P
93 | 81 51 01010001 Q
94 | 82 52 01010010 R
95 | 83 53 01010011 S
96 | 84 54 01010100 T
97 | 85 55 01010101 U
98 | 86 56 01010110 V
99 | 87 57 01010111 W
100 | 88 58 01011000 X
101 | 89 59 01011001 Y
102 | 90 5A 01011010 Z
103 | 91 5B 01011011 [ left square bracket
104 | 92 5C 01011100 \ backslash
105 | 93 5D 01011101 ] right square bracket
106 | 94 5E 01011110 ^ caret / circumflex
107 | 95 5F 01011111 _ underscore
108 | 96 60 01100000 ` grave / accent
109 | 97 61 01100001 a
110 | 98 62 01100010 b
111 | 99 63 01100011 c
112 | 100 64 01100100 d
113 | 101 65 01100101 e
114 | 102 66 01100110 f
115 | 103 67 01100111 g
116 | 104 68 01101000 h
117 | 105 69 01101001 i
118 | 106 6A 01101010 j
119 | 107 6B 01101011 k
120 | 108 6C 01101100 l
121 | 109 6D 01101101 m
122 | 110 6E 01101110 n
123 | 111 6F 01101111 o
124 | 112 70 01110000 p
125 | 113 71 01110001 q
126 | 114 72 01110010 r
127 | 115 73 01110011 s
128 | 116 74 01110100 t
129 | 117 75 01110101 u
130 | 118 76 01110110 v
131 | 119 77 01110111 w
132 | 120 78 01111000 x
133 | 121 79 01111001 y
134 | 122 7A 01111010 z
135 | 123 7B 01111011 { left curly bracket
136 | 124 7C 01111100 | vertical bar
137 | 125 7D 01111101 } right curly bracket
138 | 126 7E 01111110 ~ tilde
139 | 127 7F 01111111 DEL delete
140 | Extended ASCII characters
141 | Dec Hex Binary Char-
142 |
143 | acter
144 | Description
145 | 128 80 10000000 € euro
146 | 129 81 10000001
147 | 130 82 10000010 ‚
148 | 131 83 10000011 ƒ florin
149 | 132 84 10000100 „
150 | 133 85 10000101 …
151 | 134 86 10000110 † dagger
152 | 135 87 10000111 ‡ double dagger
153 | 136 88 10001000 ˆ
154 | 137 89 10001001 ‰ per-mille
155 | 138 8A 10001010 Š
156 | 139 8B 10001011 ‹
157 | 140 8C 10001100 Œ
158 | 141 8D 10001101
159 | 142 8E 10001110 Ž
160 | 143 8F 10001111
161 | 144 90 10010000
162 | 145 91 10010001 ‘
163 | 146 92 10010010 ’
164 | 147 93 10010011 “
165 | 148 94 10010100 ”
166 | 149 95 10010101 •
167 | 150 96 10010110 –
168 | 151 97 10010111 —
169 | 152 98 10011000 ˜
170 | 153 99 10011001 ™ trademark
171 | 154 9A 10011010 š
172 | 155 9B 10011011 ›
173 | 156 9C 10011100 œ
174 | 157 9D 10011101
175 | 158 9E 10011110 ž
176 | 159 9F 10011111 Ÿ
177 | 160 A0 10100000
178 | 161 A1 10100001 ¡
179 | 162 A2 10100010 ¢ cent
180 | 163 A3 10100011 £ pound
181 | 164 A4 10100100 ¤ currency sign
182 | 165 A5 10100101 ¥ yen, yuan
183 | 166 A6 10100110 ¦ broken bar
184 | 167 A7 10100111 § section sign
185 | 168 A8 10101000 ¨
186 | 169 A9 10101001 © copyright
187 | 170 AA 10101010 ª ordinal indicator
188 | 171 AB 10101011 «
189 | 172 AC 10101100 ¬
190 | 173 AD 10101101
191 | 174 AE 10101110 ® registered trademark
192 | 175 AF 10101111 ¯
193 | 176 B0 10110000 ° degree
194 | 177 B1 10110001 ± plus-minus
195 | 178 B2 10110010 ²
196 | 179 B3 10110011 ³
197 | 180 B4 10110100 ´
198 | 181 B5 10110101 µ mu
199 | 182 B6 10110110 ¶ pilcrow
200 | 183 B7 10110111 ·
201 | 184 B8 10111000 ¸
202 | 185 B9 10111001 ¹
203 | 186 BA 10111010 º ordinal indicator
204 | 187 BB 10111011 »
205 | 188 BC 10111100 ¼
206 | 189 BD 10111101 ½
207 | 190 BE 10111110 ¾
208 | 191 BF 10111111 ¿ inverted question mark
209 | 192 C0 11000000 À
210 | 193 C1 11000001 Á
211 | 194 C2 11000010 Â
212 | 195 C3 11000011 Ã
213 | 196 C4 11000100 Ä
214 | 197 C5 11000101 Å
215 | 198 C6 11000110 Æ
216 | 199 C7 11000111 Ç
217 | 200 C8 11001000 È
218 | 201 C9 11001001 É
219 | 202 CA 11001010 Ê
220 | 203 CB 11001011 Ë
221 | 204 CC 11001100 Ì
222 | 205 CD 11001101 Í
223 | 206 CE 11001110 Î
224 | 207 CF 11001111 Ï
225 | 208 D0 11010000 Ð
226 | 209 D1 11010001 Ñ
227 | 210 D2 11010010 Ò
228 | 211 D3 11010011 Ó
229 | 212 D4 11010100 Ô
230 | 213 D5 11010101 Õ
231 | 214 D6 11010110 Ö
232 | 215 D7 11010111 × multiplication sign
233 | 216 D8 11011000 Ø
234 | 217 D9 11011001 Ù
235 | 218 DA 11011010 Ú
236 | 219 DB 11011011 Û
237 | 220 DC 11011100 Ü
238 | 221 DD 11011101 Ý
239 | 222 DE 11011110 Þ
240 | 223 DF 11011111 ß
241 | 224 E0 11100000 à
242 | 225 E1 11100001 á
243 | 226 E2 11100010 â
244 | 227 E3 11100011 ã
245 | 228 E4 11100100 ä
246 | 229 E5 11100101 å
247 | 230 E6 11100110 æ
248 | 231 E7 11100111 ç
249 | 232 E8 11101000 è
250 | 233 E9 11101001 é
251 | 234 EA 11101010 ê
252 | 235 EB 11101011 ë
253 | 236 EC 11101100 ì
254 | 237 ED 11101101 í
255 | 238 EE 11101110 î
256 | 239 EF 11101111 ï
257 | 240 F0 11110000 ð
258 | 241 F1 11110001 ñ
259 | 242 F2 11110010 ò
260 | 243 F3 11110011 ó
261 | 244 F4 11110100 ô
262 | 245 F5 11110101 õ
263 | 246 F6 11110110 ö
264 | 247 F7 11110111 ÷ obelus
265 | 248 F8 11111000 ø
266 | 249 F9 11111001 ù
267 | 250 FA 11111010 ú
268 | 251 FB 11111011 û
269 | 252 FC 11111100 ü
270 | 253 FD 11111101 ý
271 | 254 FE 11111110 þ
272 | 255 FF 11111111 ÿ
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Serial Comm Tester.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {C22AE764-1206-414F-BCD3-AEBFE71C08B1}
8 | WinExe
9 | Properties
10 | Serial_Comm_Tester
11 | Serial Comm Tester
12 | v4.5
13 | 512
14 | false
15 | C:\Users\User\Desktop\PM Serial Com Tester 2020\
16 | true
17 | Disk
18 | false
19 | Foreground
20 | 7
21 | Days
22 | false
23 | false
24 | true
25 | SerialCommTester
26 | Philip Murray
27 | SerialCommTester
28 | 17
29 | 3.4.0.%2a
30 | true
31 | true
32 | true
33 | true
34 |
35 |
36 | AnyCPU
37 | true
38 | full
39 | false
40 | bin\Debug\
41 | DEBUG;TRACE
42 | prompt
43 | 4
44 | false
45 |
46 |
47 | AnyCPU
48 | pdbonly
49 | true
50 | bin\Release\
51 | TRACE
52 | prompt
53 | 4
54 | false
55 |
56 |
57 | serial image 2.ico
58 |
59 |
60 | 0D5DD7DDCA74354E735670D3C7EEF40F513ABE30
61 |
62 |
63 | Serial Comm Tester_2_TemporaryKey.pfx
64 |
65 |
66 | true
67 |
68 |
69 | false
70 |
71 |
72 | LocalIntranet
73 |
74 |
75 | Properties\app.manifest
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 | Form
96 |
97 |
98 | AboutBox1.cs
99 |
100 |
101 |
102 | Form
103 |
104 |
105 | ChecksumCalc.cs
106 |
107 |
108 | Form
109 |
110 |
111 | Conversion_Table.cs
112 |
113 |
114 |
115 |
116 |
117 | Form
118 |
119 |
120 | Form1.cs
121 |
122 |
123 | Form
124 |
125 |
126 | HexChart.cs
127 |
128 |
129 |
130 |
131 |
132 |
133 | AboutBox1.cs
134 |
135 |
136 | ChecksumCalc.cs
137 |
138 |
139 | Conversion_Table.cs
140 |
141 |
142 | Form1.cs
143 |
144 |
145 | HexChart.cs
146 |
147 |
148 | ResXFileCodeGenerator
149 | Resources.Designer.cs
150 | Designer
151 |
152 |
153 | True
154 | Resources.resx
155 | True
156 |
157 |
158 |
159 | SettingsSingleFileGenerator
160 | Settings.Designer.cs
161 |
162 |
163 | True
164 | Settings.settings
165 | True
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 | False
179 | Microsoft .NET Framework 4.5 %28x86 and x64%29
180 | true
181 |
182 |
183 | False
184 | .NET Framework 3.5 SP1
185 | false
186 |
187 |
188 | False
189 | Windows Installer 4.5
190 | true
191 |
192 |
193 |
194 |
195 |
196 |
203 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/HexChart.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace Serial_Comm_Tester
2 | {
3 | partial class HexChart
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | this.richTextBox1 = new System.Windows.Forms.RichTextBox();
33 | this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
34 | this.copySelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
35 | this.btnHexChart = new System.Windows.Forms.Button();
36 | this.btnUnicodeChart = new System.Windows.Forms.Button();
37 | this.btnExit = new System.Windows.Forms.Button();
38 | this.checkBoxBringToFront = new System.Windows.Forms.CheckBox();
39 | this.contextMenuStrip1.SuspendLayout();
40 | this.SuspendLayout();
41 | //
42 | // richTextBox1
43 | //
44 | this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
45 | | System.Windows.Forms.AnchorStyles.Left)
46 | | System.Windows.Forms.AnchorStyles.Right)));
47 | this.richTextBox1.ContextMenuStrip = this.contextMenuStrip1;
48 | this.richTextBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
49 | this.richTextBox1.Location = new System.Drawing.Point(12, 12);
50 | this.richTextBox1.Name = "richTextBox1";
51 | this.richTextBox1.Size = new System.Drawing.Size(706, 561);
52 | this.richTextBox1.TabIndex = 0;
53 | this.richTextBox1.Text = "Press a Button Below To See Selected Charts .";
54 | //
55 | // contextMenuStrip1
56 | //
57 | this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
58 | this.copySelectedToolStripMenuItem});
59 | this.contextMenuStrip1.Name = "contextMenuStrip1";
60 | this.contextMenuStrip1.Size = new System.Drawing.Size(106, 26);
61 | this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
62 | this.contextMenuStrip1.Click += new System.EventHandler(this.contextMenuStrip1_Click);
63 | //
64 | // copySelectedToolStripMenuItem
65 | //
66 | this.copySelectedToolStripMenuItem.Name = "copySelectedToolStripMenuItem";
67 | this.copySelectedToolStripMenuItem.Size = new System.Drawing.Size(105, 22);
68 | this.copySelectedToolStripMenuItem.Text = "Copy ";
69 | this.copySelectedToolStripMenuItem.Click += new System.EventHandler(this.copySelectedToolStripMenuItem_Click);
70 | //
71 | // btnHexChart
72 | //
73 | this.btnHexChart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
74 | this.btnHexChart.BackColor = System.Drawing.Color.Yellow;
75 | this.btnHexChart.Cursor = System.Windows.Forms.Cursors.Hand;
76 | this.btnHexChart.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Lime;
77 | this.btnHexChart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
78 | this.btnHexChart.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
79 | this.btnHexChart.Location = new System.Drawing.Point(12, 579);
80 | this.btnHexChart.Name = "btnHexChart";
81 | this.btnHexChart.Size = new System.Drawing.Size(229, 32);
82 | this.btnHexChart.TabIndex = 1;
83 | this.btnHexChart.Text = "Hex / Dec / Bin / ASCII";
84 | this.btnHexChart.UseVisualStyleBackColor = false;
85 | this.btnHexChart.Click += new System.EventHandler(this.btnHexChart_Click);
86 | //
87 | // btnUnicodeChart
88 | //
89 | this.btnUnicodeChart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
90 | this.btnUnicodeChart.BackColor = System.Drawing.Color.Yellow;
91 | this.btnUnicodeChart.Cursor = System.Windows.Forms.Cursors.Hand;
92 | this.btnUnicodeChart.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Lime;
93 | this.btnUnicodeChart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
94 | this.btnUnicodeChart.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
95 | this.btnUnicodeChart.Location = new System.Drawing.Point(247, 579);
96 | this.btnUnicodeChart.Name = "btnUnicodeChart";
97 | this.btnUnicodeChart.Size = new System.Drawing.Size(128, 32);
98 | this.btnUnicodeChart.TabIndex = 2;
99 | this.btnUnicodeChart.Text = "Unicode";
100 | this.btnUnicodeChart.UseVisualStyleBackColor = false;
101 | this.btnUnicodeChart.Click += new System.EventHandler(this.btnUnicodeChart_Click);
102 | //
103 | // btnExit
104 | //
105 | this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
106 | this.btnExit.BackColor = System.Drawing.Color.Red;
107 | this.btnExit.Cursor = System.Windows.Forms.Cursors.Hand;
108 | this.btnExit.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Lime;
109 | this.btnExit.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
110 | this.btnExit.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
111 | this.btnExit.Location = new System.Drawing.Point(603, 579);
112 | this.btnExit.Name = "btnExit";
113 | this.btnExit.Size = new System.Drawing.Size(116, 32);
114 | this.btnExit.TabIndex = 3;
115 | this.btnExit.Text = "CLOSE";
116 | this.btnExit.UseVisualStyleBackColor = false;
117 | this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
118 | //
119 | // checkBoxBringToFront
120 | //
121 | this.checkBoxBringToFront.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
122 | this.checkBoxBringToFront.AutoSize = true;
123 | this.checkBoxBringToFront.Cursor = System.Windows.Forms.Cursors.Hand;
124 | this.checkBoxBringToFront.Location = new System.Drawing.Point(419, 589);
125 | this.checkBoxBringToFront.Name = "checkBoxBringToFront";
126 | this.checkBoxBringToFront.Size = new System.Drawing.Size(89, 17);
127 | this.checkBoxBringToFront.TabIndex = 4;
128 | this.checkBoxBringToFront.Text = "Bring to Front";
129 | this.checkBoxBringToFront.UseVisualStyleBackColor = true;
130 | this.checkBoxBringToFront.CheckedChanged += new System.EventHandler(this.checkBoxBringToFront_CheckedChanged);
131 | //
132 | // HexChart
133 | //
134 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
135 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
136 | this.BackColor = System.Drawing.Color.DarkGray;
137 | this.ClientSize = new System.Drawing.Size(730, 623);
138 | this.Controls.Add(this.checkBoxBringToFront);
139 | this.Controls.Add(this.btnExit);
140 | this.Controls.Add(this.btnUnicodeChart);
141 | this.Controls.Add(this.btnHexChart);
142 | this.Controls.Add(this.richTextBox1);
143 | this.Name = "HexChart";
144 | this.ShowIcon = false;
145 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
146 | this.Text = "Charts";
147 | this.contextMenuStrip1.ResumeLayout(false);
148 | this.ResumeLayout(false);
149 | this.PerformLayout();
150 |
151 | }
152 |
153 | #endregion
154 |
155 | private System.Windows.Forms.RichTextBox richTextBox1;
156 | private System.Windows.Forms.Button btnHexChart;
157 | private System.Windows.Forms.Button btnUnicodeChart;
158 | private System.Windows.Forms.Button btnExit;
159 | private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
160 | private System.Windows.Forms.ToolStripMenuItem copySelectedToolStripMenuItem;
161 | private System.Windows.Forms.CheckBox checkBoxBringToFront;
162 | }
163 | }
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/ChecksumCalc.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | True
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | True
131 |
132 |
133 | True
134 |
135 |
136 | True
137 |
138 |
139 | True
140 |
141 |
142 | True
143 |
144 |
145 | True
146 |
147 |
148 | True
149 |
150 |
151 | True
152 |
153 |
154 | True
155 |
156 |
157 | True
158 |
159 |
160 | True
161 |
162 |
163 | True
164 |
165 |
166 | True
167 |
168 |
169 | True
170 |
171 |
172 | True
173 |
174 |
175 | True
176 |
177 |
178 | True
179 |
180 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/CRC16.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 |
26 | using System;
27 | using System.Text;
28 |
29 | namespace Serial_Comm_Tester
30 | {
31 | public class CRC16
32 | {
33 | public ushort polynomial;
34 | // const ushort polynomial = 4129;
35 | //public ushort polynomial = 0x1021; //standard crc16 ccitt
36 | // const ushort polynomial = 0x8408; //kermit
37 | // const ushort polynomial = 0xA097; //TELEDISK
38 | // const ushort polynomial = 0x8BB7; //T10_DIF
39 | // const ushort polynomial = 0x589; //DECT_X
40 | // const ushort polynomial = 0x8005; //DDS_110 / BUYPASS
41 | // const ushort polynomial = 0xC867; //CDMA2000
42 | public ushort[] table = new ushort[256];
43 | // static ushort initialValue = 0x0000; //CRC-CCITT (XModem) /TELEDISK/
44 | // static ushort initialValue = 0xffff; //CRC-CCITT (0xFFFF)
45 | // static ushort initialValue = 0x1D0F; //CRC-CCITT (0x1D0F)
46 | //public ushort initialValue = 0x0000; //kermit / BUYPASS
47 | // static ushort initialValue = 0x800D; //DDS_110
48 | // static ushort initialValue = 0xFFFF; //CDMA2000
49 | public ushort initialValue;
50 |
51 | public static bool IsitModbus = false;
52 | // public int calcByte = 0x8000 ;
53 | // public ushort calcByte { get; set; }
54 |
55 |
56 | public ushort ComputeChecksum(byte[] bytes)
57 | {
58 | //if not modbus do the other 16 bit calculations
59 | if(IsitModbus == false)
60 | {
61 | ushort crc = initialValue;
62 |
63 | for (int i = 0; i < bytes.Length; ++i)
64 | {
65 | crc = (ushort)((crc << 8) ^ table[((crc >> 8) ^ (0xff & bytes[i]))]);
66 | }
67 | return crc;
68 | }
69 | else //do the modbus calculation
70 | {
71 | ushort crcTemp;
72 |
73 | uint crc = 0xffff;
74 | // uint crc16 = Convert.ToUInt16( initialValue);
75 | uint temp;
76 | uint flag;
77 |
78 | for (int i = 0; i < bytes.Length; i++)
79 | {
80 | temp = bytes[i]; // temp has the first byte
81 | temp &= 0x00ff; // mask the MSB
82 | crc = crc ^ temp; //crc16 XOR with temp
83 |
84 | for (uint c = 0; c < 8; c++)
85 | {
86 | flag = crc & 0x01; // LSBit di crc16 is mantained
87 | crc = crc >> 1; // Lsbit di crc16 is lost
88 | if (flag != 0)
89 | {
90 | // crc16 = crc16 ^ 0x0A001; // crc16 XOR with 0x0a001
91 | crc = crc ^ polynomial; // crc16 XOR with 0x0a001
92 | }
93 |
94 | }
95 | }
96 | //crc16 = (crc16 >> 8) | (crc16 << 8); // LSB is exchanged with MSB
97 | crcTemp = Convert.ToUInt16(crc);
98 | return (crcTemp);
99 |
100 |
101 | //uint crc = initialValue;
102 | //uint temp;
103 | //ushort crcTemp;
104 | //uint flag;
105 |
106 | //for (int i = 0; i < bytes.Length; ++i)
107 | //{
108 | // temp = bytes[i];
109 | // // temp & 00ff;
110 | // crc = crc ^ temp;
111 | // for (uint c = 0; c < 8; c++)
112 | // {
113 | // flag = crc & 0x01; // LSBit di crc16 is mantained
114 | // crc = crc >> 1; // Lsbit di crc16 is lost
115 | // if (flag != 0)
116 | // crc = crc ^ 0x0a001; // crc16 XOR with 0x0a001
117 | // }
118 | // //byte index = (byte)(crc ^ bytes[i]);
119 | // //crc = (ushort)((crc >> 8) ^ table[index]);
120 | // // crc = (ushort)((crc >> 8) ^ table[(crc ^ i) & 0xFF]);
121 | // // crc = (ushort)((crc >> 8) ^ table[((crc >> 8) ^ (0xff & bytes[i]))]);
122 | //}
123 | //crcTemp = Convert.ToUInt16( crc);
124 | //return crcTemp;
125 | }
126 |
127 |
128 | }
129 |
130 | public byte[] ComputeChecksumBytes(byte[] bytes)
131 | {
132 | ushort crc = ComputeChecksum(bytes);
133 | return BitConverter.GetBytes(crc);
134 | }
135 | public enum InitialCrcValue { Zeros, NonZero1 = 0xffff, NonZero2 = 0x1D0F };
136 |
137 | //public CRC16(ushort Poly , ushort intialVal ,ushort CalcByte)//(InitialCrcValue initialValue)
138 | public CRC16(ushort Poly, ushort intialVal)//(InitialCrcValue initialValue)
139 | {
140 |
141 | if(IsitModbus == false)
142 | {
143 | polynomial = Poly;
144 | initialValue = intialVal;
145 | // calcByte = CalcByte;
146 |
147 |
148 | // initialValue = (ushort)initialValue;
149 |
150 | ushort temp, a;
151 | for (int i = 0; i < table.Length; ++i)
152 | {
153 | temp = 0;
154 | a = (ushort)(i << 8);
155 | for (int j = 0; j < 8; ++j)
156 | {
157 | if (((temp ^ a) & 0x8000) != 0)
158 | // if (((temp ^ a) & calcByte) != 0)
159 | {
160 | temp = (ushort)((temp << 1) ^ polynomial);
161 | }
162 | else
163 | {
164 | temp <<= 1;
165 | }
166 | a <<= 1;
167 | }
168 | table[i] = temp;
169 | }
170 | }
171 | if(IsitModbus == true)
172 | {
173 | polynomial = Poly;
174 | ushort value;
175 | ushort temp;
176 | for (ushort i = 0; i < table.Length; ++i)
177 | {
178 | value = 0;
179 | temp = i;
180 | for (byte j = 0; j < 8; ++j)
181 | {
182 | if (((value ^ temp) & 0x0001) != 0)
183 | {
184 | value = (ushort)((value >> 1) ^ polynomial);
185 | }
186 | else
187 | {
188 | value >>= 1;
189 | }
190 | temp >>= 1;
191 | }
192 | table[i] = value;
193 | }
194 | }
195 | // polynomial = Poly;
196 | // initialValue = intialVal;
197 | // // calcByte = CalcByte;
198 |
199 |
200 | // // initialValue = (ushort)initialValue;
201 |
202 | //ushort temp, a;
203 | // for (int i = 0; i < table.Length; ++i)
204 | // {
205 | // temp = 0;
206 | // a = (ushort)(i << 8);
207 | // for (int j = 0; j < 8; ++j)
208 | // {
209 | // if (((temp ^ a) & 0x8000) != 0)
210 | // // if (((temp ^ a) & calcByte) != 0)
211 | // {
212 | // temp = (ushort)((temp << 1) ^ polynomial);
213 | // }
214 | // else
215 | // {
216 | // temp <<= 1;
217 | // }
218 | // a <<= 1;
219 | // }
220 | // table[i] = temp;
221 | // }
222 | }
223 |
224 | //public ushort ComputeChecksumModbus(byte[] bytes)
225 | //{
226 | // ushort crc = 0;
227 | // for (int i = 0; i < bytes.Length; ++i)
228 | // {
229 | // byte index = (byte)(crc ^ bytes[i]);
230 | // crc = (ushort)((crc >> 8) ^ table[index]);
231 | // }
232 | // return crc;
233 | //}
234 | //public Crc16Modbus(ushort Poly)
235 | //{
236 | // polynomial = Poly;
237 | // ushort value;
238 | // ushort temp;
239 | // for (ushort i = 0; i < table.Length; ++i)
240 | // {
241 | // value = 0;
242 | // temp = i;
243 | // for (byte j = 0; j < 8; ++j)
244 | // {
245 | // if (((value ^ temp) & 0x0001) != 0)
246 | // {
247 | // value = (ushort)((value >> 1) ^ polynomial);
248 | // }
249 | // else
250 | // {
251 | // value >>= 1;
252 | // }
253 | // temp >>= 1;
254 | // }
255 | // table[i] = value;
256 | // }
257 | //}
258 | public byte[] HexToBytes(string input)
259 | {
260 | StringBuilder sb = new StringBuilder(input); //---get rid of null or white space
261 | sb.Replace(" ", "");
262 | sb.Replace(" ", "");
263 | input = sb.ToString();
264 |
265 | byte[] result = new byte[input.Length / 2];
266 | for (int i = 0; i < result.Length; i++)
267 | {
268 | result[i] = Convert.ToByte(input.Substring(2 * i, 2), 16);
269 | }
270 | return result;
271 | }
272 | }
273 | }
274 |
275 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/AboutBox1.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace Serial_Comm_Tester
2 | {
3 | partial class AboutBox1
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | protected override void Dispose(bool disposing)
14 | {
15 | if (disposing && (components != null))
16 | {
17 | components.Dispose();
18 | }
19 | base.Dispose(disposing);
20 | }
21 |
22 | #region Windows Form Designer generated code
23 |
24 | ///
25 | /// Required method for Designer support - do not modify
26 | /// the contents of this method with the code editor.
27 | ///
28 | private void InitializeComponent()
29 | {
30 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox1));
31 | this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
32 | this.logoPictureBox = new System.Windows.Forms.PictureBox();
33 | this.labelProductName = new System.Windows.Forms.Label();
34 | this.labelVersion = new System.Windows.Forms.Label();
35 | this.labelCopyright = new System.Windows.Forms.Label();
36 | this.labelCompanyName = new System.Windows.Forms.Label();
37 | this.textBoxDescription = new System.Windows.Forms.TextBox();
38 | this.okButton = new System.Windows.Forms.Button();
39 | this.tableLayoutPanel.SuspendLayout();
40 | ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
41 | this.SuspendLayout();
42 | //
43 | // tableLayoutPanel
44 | //
45 | this.tableLayoutPanel.ColumnCount = 2;
46 | this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
47 | this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
48 | this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
49 | this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
50 | this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
51 | this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
52 | this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
53 | this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
54 | this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
55 | this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
56 | this.tableLayoutPanel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
57 | this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
58 | this.tableLayoutPanel.Name = "tableLayoutPanel";
59 | this.tableLayoutPanel.RowCount = 6;
60 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
61 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.42184F));
62 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.925558F));
63 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.42928F));
64 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
65 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
66 | this.tableLayoutPanel.Size = new System.Drawing.Size(1115, 440);
67 | this.tableLayoutPanel.TabIndex = 0;
68 | //
69 | // logoPictureBox
70 | //
71 | this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
72 | this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
73 | this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
74 | this.logoPictureBox.Name = "logoPictureBox";
75 | this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
76 | this.logoPictureBox.Size = new System.Drawing.Size(361, 434);
77 | this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
78 | this.logoPictureBox.TabIndex = 12;
79 | this.logoPictureBox.TabStop = false;
80 | //
81 | // labelProductName
82 | //
83 | this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
84 | this.labelProductName.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
85 | this.labelProductName.Location = new System.Drawing.Point(373, 0);
86 | this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
87 | this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17);
88 | this.labelProductName.Name = "labelProductName";
89 | this.labelProductName.Size = new System.Drawing.Size(739, 17);
90 | this.labelProductName.TabIndex = 19;
91 | this.labelProductName.Text = "Product Name";
92 | this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
93 | //
94 | // labelVersion
95 | //
96 | this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
97 | this.labelVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
98 | this.labelVersion.Location = new System.Drawing.Point(373, 44);
99 | this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
100 | this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
101 | this.labelVersion.Name = "labelVersion";
102 | this.labelVersion.Size = new System.Drawing.Size(739, 17);
103 | this.labelVersion.TabIndex = 0;
104 | this.labelVersion.Text = "Version";
105 | this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
106 | //
107 | // labelCopyright
108 | //
109 | this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
110 | this.labelCopyright.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
111 | this.labelCopyright.Location = new System.Drawing.Point(373, 89);
112 | this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
113 | this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17);
114 | this.labelCopyright.Name = "labelCopyright";
115 | this.labelCopyright.Size = new System.Drawing.Size(739, 17);
116 | this.labelCopyright.TabIndex = 21;
117 | this.labelCopyright.Text = "Copyright";
118 | this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
119 | this.labelCopyright.Click += new System.EventHandler(this.labelCopyright_Click);
120 | //
121 | // labelCompanyName
122 | //
123 | this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
124 | this.labelCompanyName.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
125 | this.labelCompanyName.Location = new System.Drawing.Point(373, 132);
126 | this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
127 | this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 17);
128 | this.labelCompanyName.Name = "labelCompanyName";
129 | this.labelCompanyName.Size = new System.Drawing.Size(739, 17);
130 | this.labelCompanyName.TabIndex = 22;
131 | this.labelCompanyName.Text = "Company Name";
132 | this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
133 | //
134 | // textBoxDescription
135 | //
136 | this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
137 | this.textBoxDescription.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
138 | this.textBoxDescription.Location = new System.Drawing.Point(373, 176);
139 | this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
140 | this.textBoxDescription.Multiline = true;
141 | this.textBoxDescription.Name = "textBoxDescription";
142 | this.textBoxDescription.ReadOnly = true;
143 | this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
144 | this.textBoxDescription.Size = new System.Drawing.Size(739, 214);
145 | this.textBoxDescription.TabIndex = 23;
146 | this.textBoxDescription.TabStop = false;
147 | this.textBoxDescription.Text = "Description";
148 | this.textBoxDescription.TextChanged += new System.EventHandler(this.textBoxDescription_TextChanged);
149 | //
150 | // okButton
151 | //
152 | this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
153 | this.okButton.BackColor = System.Drawing.Color.Chartreuse;
154 | this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
155 | this.okButton.Location = new System.Drawing.Point(1037, 414);
156 | this.okButton.Name = "okButton";
157 | this.okButton.Size = new System.Drawing.Size(75, 23);
158 | this.okButton.TabIndex = 24;
159 | this.okButton.Text = "&COOL";
160 | this.okButton.UseVisualStyleBackColor = false;
161 | //
162 | // AboutBox1
163 | //
164 | this.AcceptButton = this.okButton;
165 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
166 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
167 | this.BackColor = System.Drawing.SystemColors.ActiveCaption;
168 | this.ClientSize = new System.Drawing.Size(1133, 458);
169 | this.Controls.Add(this.tableLayoutPanel);
170 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
171 | this.MaximizeBox = false;
172 | this.MinimizeBox = false;
173 | this.Name = "AboutBox1";
174 | this.Padding = new System.Windows.Forms.Padding(9);
175 | this.ShowIcon = false;
176 | this.ShowInTaskbar = false;
177 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
178 | this.Text = "About Serial Comm Tester";
179 | this.Load += new System.EventHandler(this.AboutBox1_Load);
180 | this.tableLayoutPanel.ResumeLayout(false);
181 | this.tableLayoutPanel.PerformLayout();
182 | ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
183 | this.ResumeLayout(false);
184 |
185 | }
186 |
187 | #endregion
188 |
189 | private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
190 | private System.Windows.Forms.PictureBox logoPictureBox;
191 | private System.Windows.Forms.Label labelProductName;
192 | private System.Windows.Forms.Label labelVersion;
193 | private System.Windows.Forms.Label labelCopyright;
194 | private System.Windows.Forms.Label labelCompanyName;
195 | private System.Windows.Forms.TextBox textBoxDescription;
196 | private System.Windows.Forms.Button okButton;
197 | }
198 | }
199 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 2, June 1991
3 |
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 | Everyone is permitted to copy and distribute verbatim copies
7 | of this license document, but changing it is not allowed.
8 |
9 | Preamble
10 |
11 | The licenses for most software are designed to take away your
12 | freedom to share and change it. By contrast, the GNU General Public
13 | License is intended to guarantee your freedom to share and change free
14 | software--to make sure the software is free for all its users. This
15 | General Public License applies to most of the Free Software
16 | Foundation's software and to any other program whose authors commit to
17 | using it. (Some other Free Software Foundation software is covered by
18 | the GNU Lesser General Public License instead.) You can apply it to
19 | your programs, too.
20 |
21 | When we speak of free software, we are referring to freedom, not
22 | price. Our General Public Licenses are designed to make sure that you
23 | have the freedom to distribute copies of free software (and charge for
24 | this service if you wish), that you receive source code or can get it
25 | if you want it, that you can change the software or use pieces of it
26 | in new free programs; and that you know you can do these things.
27 |
28 | To protect your rights, we need to make restrictions that forbid
29 | anyone to deny you these rights or to ask you to surrender the rights.
30 | These restrictions translate to certain responsibilities for you if you
31 | distribute copies of the software, or if you modify it.
32 |
33 | For example, if you distribute copies of such a program, whether
34 | gratis or for a fee, you must give the recipients all the rights that
35 | you have. You must make sure that they, too, receive or can get the
36 | source code. And you must show them these terms so they know their
37 | rights.
38 |
39 | We protect your rights with two steps: (1) copyright the software, and
40 | (2) offer you this license which gives you legal permission to copy,
41 | distribute and/or modify the software.
42 |
43 | Also, for each author's protection and ours, we want to make certain
44 | that everyone understands that there is no warranty for this free
45 | software. If the software is modified by someone else and passed on, we
46 | want its recipients to know that what they have is not the original, so
47 | that any problems introduced by others will not reflect on the original
48 | authors' reputations.
49 |
50 | Finally, any free program is threatened constantly by software
51 | patents. We wish to avoid the danger that redistributors of a free
52 | program will individually obtain patent licenses, in effect making the
53 | program proprietary. To prevent this, we have made it clear that any
54 | patent must be licensed for everyone's free use or not licensed at all.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | GNU GENERAL PUBLIC LICENSE
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61 |
62 | 0. This License applies to any program or other work which contains
63 | a notice placed by the copyright holder saying it may be distributed
64 | under the terms of this General Public License. The "Program", below,
65 | refers to any such program or work, and a "work based on the Program"
66 | means either the Program or any derivative work under copyright law:
67 | that is to say, a work containing the Program or a portion of it,
68 | either verbatim or with modifications and/or translated into another
69 | language. (Hereinafter, translation is included without limitation in
70 | the term "modification".) Each licensee is addressed as "you".
71 |
72 | Activities other than copying, distribution and modification are not
73 | covered by this License; they are outside its scope. The act of
74 | running the Program is not restricted, and the output from the Program
75 | is covered only if its contents constitute a work based on the
76 | Program (independent of having been made by running the Program).
77 | Whether that is true depends on what the Program does.
78 |
79 | 1. You may copy and distribute verbatim copies of the Program's
80 | source code as you receive it, in any medium, provided that you
81 | conspicuously and appropriately publish on each copy an appropriate
82 | copyright notice and disclaimer of warranty; keep intact all the
83 | notices that refer to this License and to the absence of any warranty;
84 | and give any other recipients of the Program a copy of this License
85 | along with the Program.
86 |
87 | You may charge a fee for the physical act of transferring a copy, and
88 | you may at your option offer warranty protection in exchange for a fee.
89 |
90 | 2. You may modify your copy or copies of the Program or any portion
91 | of it, thus forming a work based on the Program, and copy and
92 | distribute such modifications or work under the terms of Section 1
93 | above, provided that you also meet all of these conditions:
94 |
95 | a) You must cause the modified files to carry prominent notices
96 | stating that you changed the files and the date of any change.
97 |
98 | b) You must cause any work that you distribute or publish, that in
99 | whole or in part contains or is derived from the Program or any
100 | part thereof, to be licensed as a whole at no charge to all third
101 | parties under the terms of this License.
102 |
103 | c) If the modified program normally reads commands interactively
104 | when run, you must cause it, when started running for such
105 | interactive use in the most ordinary way, to print or display an
106 | announcement including an appropriate copyright notice and a
107 | notice that there is no warranty (or else, saying that you provide
108 | a warranty) and that users may redistribute the program under
109 | these conditions, and telling the user how to view a copy of this
110 | License. (Exception: if the Program itself is interactive but
111 | does not normally print such an announcement, your work based on
112 | the Program is not required to print an announcement.)
113 |
114 | These requirements apply to the modified work as a whole. If
115 | identifiable sections of that work are not derived from the Program,
116 | and can be reasonably considered independent and separate works in
117 | themselves, then this License, and its terms, do not apply to those
118 | sections when you distribute them as separate works. But when you
119 | distribute the same sections as part of a whole which is a work based
120 | on the Program, the distribution of the whole must be on the terms of
121 | this License, whose permissions for other licensees extend to the
122 | entire whole, and thus to each and every part regardless of who wrote it.
123 |
124 | Thus, it is not the intent of this section to claim rights or contest
125 | your rights to work written entirely by you; rather, the intent is to
126 | exercise the right to control the distribution of derivative or
127 | collective works based on the Program.
128 |
129 | In addition, mere aggregation of another work not based on the Program
130 | with the Program (or with a work based on the Program) on a volume of
131 | a storage or distribution medium does not bring the other work under
132 | the scope of this License.
133 |
134 | 3. You may copy and distribute the Program (or a work based on it,
135 | under Section 2) in object code or executable form under the terms of
136 | Sections 1 and 2 above provided that you also do one of the following:
137 |
138 | a) Accompany it with the complete corresponding machine-readable
139 | source code, which must be distributed under the terms of Sections
140 | 1 and 2 above on a medium customarily used for software interchange; or,
141 |
142 | b) Accompany it with a written offer, valid for at least three
143 | years, to give any third party, for a charge no more than your
144 | cost of physically performing source distribution, a complete
145 | machine-readable copy of the corresponding source code, to be
146 | distributed under the terms of Sections 1 and 2 above on a medium
147 | customarily used for software interchange; or,
148 |
149 | c) Accompany it with the information you received as to the offer
150 | to distribute corresponding source code. (This alternative is
151 | allowed only for noncommercial distribution and only if you
152 | received the program in object code or executable form with such
153 | an offer, in accord with Subsection b above.)
154 |
155 | The source code for a work means the preferred form of the work for
156 | making modifications to it. For an executable work, complete source
157 | code means all the source code for all modules it contains, plus any
158 | associated interface definition files, plus the scripts used to
159 | control compilation and installation of the executable. However, as a
160 | special exception, the source code distributed need not include
161 | anything that is normally distributed (in either source or binary
162 | form) with the major components (compiler, kernel, and so on) of the
163 | operating system on which the executable runs, unless that component
164 | itself accompanies the executable.
165 |
166 | If distribution of executable or object code is made by offering
167 | access to copy from a designated place, then offering equivalent
168 | access to copy the source code from the same place counts as
169 | distribution of the source code, even though third parties are not
170 | compelled to copy the source along with the object code.
171 |
172 | 4. You may not copy, modify, sublicense, or distribute the Program
173 | except as expressly provided under this License. Any attempt
174 | otherwise to copy, modify, sublicense or distribute the Program is
175 | void, and will automatically terminate your rights under this License.
176 | However, parties who have received copies, or rights, from you under
177 | this License will not have their licenses terminated so long as such
178 | parties remain in full compliance.
179 |
180 | 5. You are not required to accept this License, since you have not
181 | signed it. However, nothing else grants you permission to modify or
182 | distribute the Program or its derivative works. These actions are
183 | prohibited by law if you do not accept this License. Therefore, by
184 | modifying or distributing the Program (or any work based on the
185 | Program), you indicate your acceptance of this License to do so, and
186 | all its terms and conditions for copying, distributing or modifying
187 | the Program or works based on it.
188 |
189 | 6. Each time you redistribute the Program (or any work based on the
190 | Program), the recipient automatically receives a license from the
191 | original licensor to copy, distribute or modify the Program subject to
192 | these terms and conditions. You may not impose any further
193 | restrictions on the recipients' exercise of the rights granted herein.
194 | You are not responsible for enforcing compliance by third parties to
195 | this License.
196 |
197 | 7. If, as a consequence of a court judgment or allegation of patent
198 | infringement or for any other reason (not limited to patent issues),
199 | conditions are imposed on you (whether by court order, agreement or
200 | otherwise) that contradict the conditions of this License, they do not
201 | excuse you from the conditions of this License. If you cannot
202 | distribute so as to satisfy simultaneously your obligations under this
203 | License and any other pertinent obligations, then as a consequence you
204 | may not distribute the Program at all. For example, if a patent
205 | license would not permit royalty-free redistribution of the Program by
206 | all those who receive copies directly or indirectly through you, then
207 | the only way you could satisfy both it and this License would be to
208 | refrain entirely from distribution of the Program.
209 |
210 | If any portion of this section is held invalid or unenforceable under
211 | any particular circumstance, the balance of the section is intended to
212 | apply and the section as a whole is intended to apply in other
213 | circumstances.
214 |
215 | It is not the purpose of this section to induce you to infringe any
216 | patents or other property right claims or to contest validity of any
217 | such claims; this section has the sole purpose of protecting the
218 | integrity of the free software distribution system, which is
219 | implemented by public license practices. Many people have made
220 | generous contributions to the wide range of software distributed
221 | through that system in reliance on consistent application of that
222 | system; it is up to the author/donor to decide if he or she is willing
223 | to distribute software through any other system and a licensee cannot
224 | impose that choice.
225 |
226 | This section is intended to make thoroughly clear what is believed to
227 | be a consequence of the rest of this License.
228 |
229 | 8. If the distribution and/or use of the Program is restricted in
230 | certain countries either by patents or by copyrighted interfaces, the
231 | original copyright holder who places the Program under this License
232 | may add an explicit geographical distribution limitation excluding
233 | those countries, so that distribution is permitted only in or among
234 | countries not thus excluded. In such case, this License incorporates
235 | the limitation as if written in the body of this License.
236 |
237 | 9. The Free Software Foundation may publish revised and/or new versions
238 | of the General Public License from time to time. Such new versions will
239 | be similar in spirit to the present version, but may differ in detail to
240 | address new problems or concerns.
241 |
242 | Each version is given a distinguishing version number. If the Program
243 | specifies a version number of this License which applies to it and "any
244 | later version", you have the option of following the terms and conditions
245 | either of that version or of any later version published by the Free
246 | Software Foundation. If the Program does not specify a version number of
247 | this License, you may choose any version ever published by the Free Software
248 | Foundation.
249 |
250 | 10. If you wish to incorporate parts of the Program into other free
251 | programs whose distribution conditions are different, write to the author
252 | to ask for permission. For software which is copyrighted by the Free
253 | Software Foundation, write to the Free Software Foundation; we sometimes
254 | make exceptions for this. Our decision will be guided by the two goals
255 | of preserving the free status of all derivatives of our free software and
256 | of promoting the sharing and reuse of software generally.
257 |
258 | NO WARRANTY
259 |
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268 | REPAIR OR CORRECTION.
269 |
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278 | POSSIBILITY OF SUCH DAMAGES.
279 |
280 | END OF TERMS AND CONDITIONS
281 |
282 | How to Apply These Terms to Your New Programs
283 |
284 | If you develop a new program, and you want it to be of the greatest
285 | possible use to the public, the best way to achieve this is to make it
286 | free software which everyone can redistribute and change under these terms.
287 |
288 | To do so, attach the following notices to the program. It is safest
289 | to attach them to the start of each source file to most effectively
290 | convey the exclusion of warranty; and each file should have at least
291 | the "copyright" line and a pointer to where the full notice is found.
292 |
293 |
294 | Copyright (C)
295 |
296 | This program is free software; you can redistribute it and/or modify
297 | it under the terms of the GNU General Public License as published by
298 | the Free Software Foundation; either version 2 of the License, or
299 | (at your option) any later version.
300 |
301 | This program is distributed in the hope that it will be useful,
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 | GNU General Public License for more details.
305 |
306 | You should have received a copy of the GNU General Public License along
307 | with this program; if not, write to the Free Software Foundation, Inc.,
308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309 |
310 | Also add information on how to contact you by electronic and paper mail.
311 |
312 | If the program is interactive, make it output a short notice like this
313 | when it starts in an interactive mode:
314 |
315 | Gnomovision version 69, Copyright (C) year name of author
316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317 | This is free software, and you are welcome to redistribute it
318 | under certain conditions; type `show c' for details.
319 |
320 | The hypothetical commands `show w' and `show c' should show the appropriate
321 | parts of the General Public License. Of course, the commands you use may
322 | be called something other than `show w' and `show c'; they could even be
323 | mouse-clicks or menu items--whatever suits your program.
324 |
325 | You should also get your employer (if you work as a programmer) or your
326 | school, if any, to sign a "copyright disclaimer" for the program, if
327 | necessary. Here is a sample; alter the names:
328 |
329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330 | `Gnomovision' (which makes passes at compilers) written by James Hacker.
331 |
332 | , 1 April 1989
333 | Ty Coon, President of Vice
334 |
335 | This General Public License does not permit incorporating your program into
336 | proprietary programs. If your program is a subroutine library, you may
337 | consider it more useful to permit linking proprietary applications with the
338 | library. If this is what you want to do, use the GNU Lesser General
339 | Public License instead of this License.
340 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/Conversion_Table.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of Serial-Comm-Tester source code. All Rights Reserved.
3 | *
4 | * Serial-Comm-Tetster is free software; you can redistribute it and/or modify
5 | * it under the terms of the GNU General Public License as published by
6 | * the Free Software Foundation; either version 2 of the License.
7 | *
8 | * This software is distributed in the hope that it will be useful,
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | * GNU General Public License for more details.
12 | *
13 | * You should have received a copy of the GNU General Public License
14 | * along with this software; if not, write to the Free Software
15 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 | * USA.
17 | */
18 |
19 |
20 | /*
21 | * Author: Philip Murray
22 | * Project Homepage: https://github.com/PhilipMur/Serial-Comm-Tester
23 | */
24 |
25 | using System;
26 | using System.Windows.Forms;
27 |
28 | namespace Serial_Comm_Tester
29 | {
30 | public partial class Conversion_Table : Form
31 | {
32 | public Conversion_Table()
33 | {
34 | InitializeComponent();
35 | }
36 |
37 |
38 | //convert the parsed value in from value back in base 2 = binary base 8 = ocatal base 16 = hex and base 0 = dec
39 | private void btnConvert_Click(object sender, EventArgs e)
40 | {
41 |
42 | if (richTextBoxTextValue.Text != string.Empty )//&& checkBoxTextVal.Checked == true)
43 | {
44 | richTextBoxHex.Text = toHex(richTextBoxTextValue.Text);
45 | richTextBoxDec.Text = toDec(richTextBoxTextValue.Text);
46 | richTextBoxOctal.Text = toOct(richTextBoxTextValue.Text);
47 | richTextBoxBinary.Text = toBin(richTextBoxTextValue.Text);
48 |
49 |
50 | }
51 |
52 | }
53 |
54 | private void btnClear_Click(object sender, EventArgs e)
55 | {
56 | richTextBoxTestDec.Clear();
57 | richTextBoxTestHex.Clear();
58 | richTextBoxDecToHex2.Clear();
59 | richTextBoxTextValue.Clear();
60 | richTextBoxDecToHex.Clear();
61 | richTextBoxHex.Clear();
62 | richTextBoxDec.Clear();
63 | richTextBoxBinary.Clear();
64 | richTextBoxOctal.Clear();
65 |
66 |
67 |
68 | richTextBoxAscii2.Clear();
69 | richTextBoxDec.Clear();
70 | richTextBoxHex.Clear();
71 | richTextBoxHex2.Clear();
72 | }
73 |
74 |
75 |
76 | public void btnExit_Click(object sender, EventArgs e)
77 | {
78 | // Hide();
79 |
80 | Close();
81 | }
82 |
83 |
84 | //this code gets the value of richtextbox2 and displays it in hex in RTB4
85 | public string toHex(string inp)
86 | {
87 | string outp = string.Empty;
88 | char[] value = inp.ToCharArray();
89 |
90 | foreach (char L in value)
91 | {
92 | int v = Convert.ToInt32(L);
93 | // long v = Convert.ToInt64(L);
94 | outp += string.Format("{0:X}" + " ", v);
95 |
96 |
97 | }
98 | return outp;
99 |
100 | }
101 | //this code gets the value of richtextbox2 and displays it in Decimal in RTB3
102 | public string toDec(string inp2)
103 | {
104 |
105 |
106 | string outp2 = string.Empty;
107 | char[] value = inp2.ToCharArray();
108 |
109 | foreach (char L in value)
110 | {
111 |
112 | int v2 = Convert.ToInt32(L);
113 | //long v2 = Convert.ToInt64(L);
114 |
115 | outp2 += string.Format("{0}" + " ", v2);
116 |
117 | }
118 | return outp2;
119 | }
120 | //to base 8
121 | public string toOct(string inp2)
122 | {
123 |
124 |
125 | string outp2 = string.Empty;
126 | char[] value = inp2.ToCharArray();
127 |
128 | foreach (char L in value)
129 | {
130 |
131 | int v2 = Convert.ToInt32(L);
132 | //convert to base 8
133 | string v2Con = Convert.ToString(v2, 8);
134 | //long v2 = Convert.ToInt64(L);
135 |
136 | // outp2 += string.Format("{0}" + " ", v2);
137 | outp2 += string.Format("{0}" + " ", v2Con);
138 |
139 | }
140 | return outp2;
141 | }
142 | //to base 2 = binary
143 | public string toBin(string inp2)
144 | {
145 |
146 |
147 | string outp2 = string.Empty;
148 | char[] value = inp2.ToCharArray();
149 |
150 | foreach (char L in value)
151 | {
152 |
153 | int v2 = Convert.ToInt32(L);
154 | //convert to a base 2 =binary
155 | string v2Con = Convert.ToString(v2, 2).PadLeft(8,'0');
156 | //long v2 = Convert.ToInt64(L);
157 |
158 | // outp2 += string.Format("{0}" + " ", v2);
159 | outp2 += string.Format("{0}" + " ", v2Con);
160 |
161 | }
162 | return outp2;
163 | }
164 | //hex to dec
165 | private static Decimal ParseHexString(string hexNumber)
166 | {
167 | hexNumber = hexNumber.Replace("x", string.Empty);
168 | long result = 0;
169 | long.TryParse(hexNumber, System.Globalization.NumberStyles.HexNumber, null, out result);
170 | return result;
171 | }
172 |
173 | //hex to ascii
174 | public static string ConvertHex(string hexString)
175 | {
176 | try
177 | {
178 | string ascii = string.Empty;
179 |
180 | for (int i = 0; i < hexString.Length; i += 2)
181 | // for (int i = 0; i < hexString.Length; i++)
182 | {
183 | string hs = string.Empty;
184 |
185 | hs = hexString.Substring(i, 2);
186 | // hs = hexString;
187 | uint decval = Convert.ToUInt32(hs, 16);
188 | // int decval = System.Convert.ToInt32(hs, 16);
189 | char character = Convert.ToChar(decval);
190 |
191 |
192 |
193 | ascii += character;
194 | // ascii += equivalentLetter;
195 |
196 | }
197 |
198 | return ascii;
199 | }
200 | catch (Exception ex)
201 | {
202 | MessageBox.Show(ex.Message,"ERROR" , MessageBoxButtons.OK , MessageBoxIcon.Error);
203 | }
204 |
205 | return string.Empty;
206 | }
207 |
208 |
209 |
210 |
211 |
212 | private void btnHexToDec_Click(object sender, EventArgs e)
213 | {
214 | //hex to dec
215 | richTextBoxTestDec.Text = Convert.ToString(ParseHexString(richTextBoxTestHex.Text));
216 | }
217 |
218 | private void btnHexToAscii_Click(object sender, EventArgs e)
219 | {
220 | if (richTextBoxHex2.TextLength < 2)
221 | {
222 | MessageBox.Show("Enter 2 Values = example: enter (01) not (1) by itself", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
223 | }
224 |
225 | else
226 | {
227 |
228 | richTextBoxAscii2.Text = Convert.ToString(ConvertHex(richTextBoxHex2.Text));
229 |
230 |
231 |
232 | if (richTextBoxAscii2.Text == "") //00
233 | {
234 | lblAsciiChar.Text = "NUL = Null char";
235 | //labelText = "NUL = Null char";
236 | }
237 | else if (richTextBoxAscii2.Text == "")//01
238 | {
239 | //MessageBox.Show("hi");
240 | lblAsciiChar.Text = "SOH = Start of Heading";
241 | }
242 | else if (richTextBoxAscii2.Text == "")//02
243 | {
244 | lblAsciiChar.Text = "STX = Start of Text";
245 | }
246 | else if (richTextBoxAscii2.Text == "")//03
247 | {
248 | lblAsciiChar.Text = "ETX = End of Text";
249 | }
250 | else if (richTextBoxAscii2.Text == "")//04
251 | {
252 | lblAsciiChar.Text = "EOT = End of Transmission";
253 | }
254 | else if (richTextBoxAscii2.Text == "")//05
255 | {
256 | lblAsciiChar.Text = "ENQ = Enquiry";
257 | }
258 | else if (richTextBoxAscii2.Text == "")//06
259 | {
260 | lblAsciiChar.Text = "ACK = Acknowledgment";
261 | }
262 | if (richTextBoxAscii2.Text == "")//07
263 | {
264 | lblAsciiChar.Text = "BEL = Bell";
265 | }
266 | else if (richTextBoxAscii2.Text == "")//08
267 | {
268 | lblAsciiChar.Text = "BS = Back Space";
269 | }
270 | else if (richTextBoxHex2.Text == "09" )
271 | // else if (richTextBoxAscii2.Text == " ")//09
272 | {
273 | lblAsciiChar.Text = "HT = Horizontal Tab";
274 | }
275 | // else if (richTextBoxAscii2.Text == "")
276 |
277 | else if (richTextBoxHex2.Text == "0A" | richTextBoxHex2.Text == "0a")
278 |
279 | {
280 | lblAsciiChar.Text = "LF = Line Feed";
281 | }
282 |
283 | // else if (richTextBoxAscii2.Text == "")//0B
284 | else if (richTextBoxHex2.Text == "0B" | richTextBoxHex2.Text == "0b")
285 | {
286 | lblAsciiChar.Text = "VT = Vertical Tab";
287 | }
288 | // else if (richTextBoxAscii2.Text == "")//0C
289 | else if (richTextBoxHex2.Text == "0C" | richTextBoxHex2.Text == "0c")
290 | {
291 | lblAsciiChar.Text = "FF = Form Feed";
292 | }
293 | //else if (richTextBoxAscii2.Text == "")//0D
294 | else if (richTextBoxHex2.Text == "0D" | richTextBoxHex2.Text == "0d")
295 | {
296 | lblAsciiChar.Text = "CR = Carriage Return";
297 | }
298 | else if (richTextBoxAscii2.Text == "")//0E
299 | {
300 | lblAsciiChar.Text = "SO = Shift Out / X-On";
301 | }
302 | else if (richTextBoxAscii2.Text == "")//0F
303 | {
304 | lblAsciiChar.Text = "SI = Shift In / X-Off";
305 | }
306 | else if (richTextBoxAscii2.Text == "")//10
307 | {
308 | lblAsciiChar.Text = "DLE = Device Control 1 (oft. XON)";
309 | }
310 | if (richTextBoxAscii2.Text == "")//11
311 | {
312 | lblAsciiChar.Text = "DC1 = Device Control 1 (oft. XON)";
313 | }
314 | if (richTextBoxAscii2.Text == "")//12
315 | {
316 | lblAsciiChar.Text = "DC2 = Device Control 2";
317 | }
318 | else if (richTextBoxAscii2.Text == "")//13
319 | {
320 | lblAsciiChar.Text = "DC3 = Device Control 3 (oft. XOFF)";
321 | }
322 | else if (richTextBoxAscii2.Text == "")//14
323 | {
324 | lblAsciiChar.Text = "DC4 = Device Control 4";
325 | }
326 | else if (richTextBoxAscii2.Text == "")//15
327 | {
328 | lblAsciiChar.Text = "NAK = Negative Acknowledgement";
329 | }
330 | else if (richTextBoxAscii2.Text == "")//16
331 | {
332 | lblAsciiChar.Text = "SYN = Synchronous Idle";
333 | }
334 | else if (richTextBoxAscii2.Text == "")//17
335 | {
336 | lblAsciiChar.Text = "ETB = End of Transmit Block";
337 | }
338 | else if (richTextBoxAscii2.Text == "")//18
339 | {
340 | lblAsciiChar.Text = "CAN = Cancel";
341 | }
342 | else if (richTextBoxAscii2.Text == "")//19
343 | {
344 | lblAsciiChar.Text = "EM = End of Medium";
345 | }
346 | else if (richTextBoxAscii2.Text == "")//1A
347 | {
348 | lblAsciiChar.Text = "SUB = Substitute";
349 | }
350 | else if (richTextBoxAscii2.Text == "")//1B
351 | {
352 | lblAsciiChar.Text = "ESC = Escape";
353 | }
354 | else if (richTextBoxAscii2.Text == "")//1C
355 | {
356 | lblAsciiChar.Text = "FS = File Separator";
357 | }
358 |
359 | else if (richTextBoxAscii2.Text == "")//1D
360 | {
361 | lblAsciiChar.Text = "GS = Group Separator";
362 | }
363 | else if (richTextBoxAscii2.Text == "")//1E
364 | {
365 | lblAsciiChar.Text = "RS = Record Separator";
366 | }
367 | else if (richTextBoxAscii2.Text == "")//1F
368 | {
369 | lblAsciiChar.Text = "US = Unit Separator";
370 | }
371 | else if (richTextBoxAscii2.Text == "")//7f
372 | {
373 | lblAsciiChar.Text = "DEL = Delete";
374 | }
375 | //else
376 | //{
377 | // lblAsciiChar.Text = "";
378 | //}
379 | }
380 | }
381 |
382 | private void richTextBoxTextValue_TextChanged(object sender, EventArgs e)
383 | {
384 | //// richTextBoxValue.Clear();
385 | richTextBoxHex.Clear();
386 | richTextBoxDec.Clear();
387 | richTextBoxBinary.Clear();
388 | richTextBoxOctal.Clear();
389 | //richTextBoxTextValue.Text += " ";
390 | //richTextBoxTextValue.Text.Insert(richTextBoxTextValue.TextLength, "+1");
391 | }
392 |
393 | private void richTextBoxValue_TextChanged(object sender, EventArgs e)
394 | {
395 | //// richTextBoxValue.Clear();
396 | //richTextBoxHex.Clear();
397 | //richTextBoxDec.Clear();
398 | //richTextBoxBinary.Clear();
399 | //richTextBoxOctal.Clear();
400 | }
401 |
402 |
403 | private int t;
404 |
405 | private void btnDecToHex_Click_1(object sender, EventArgs e)
406 | {
407 | //THIS CHECKS TO SEE IF IT CAN BE PARSED
408 | bool b = int.TryParse(richTextBoxDecToHex.Text , out t);
409 |
410 |
411 |
412 | if (richTextBoxDecToHex.Text != string.Empty && b == true)//&& checkBoxNumVal.Checked == true)
413 | {
414 | int textConverter = int.Parse(richTextBoxDecToHex.Text);
415 |
416 | richTextBoxDecToHex2.Text = Convert.ToString(textConverter, 16);
417 |
418 | }
419 | else if(b == false)
420 | {
421 | richTextBoxDecToHex.Clear();
422 | MessageBox.Show("Enter a Value that can be converted", "Message for a noobie",MessageBoxButtons.OK, MessageBoxIcon.Information);
423 | }
424 |
425 | }
426 |
427 | private void richTextBoxHex2_TextChanged(object sender, EventArgs e)
428 | {
429 | lblAsciiChar.Text = "?";
430 | }
431 |
432 | //THIS WILL ADD SPACES TO THE TEXT IN THE ASCII TEXT CONVERT BOX
433 | private void richTextBoxTextValue_KeyPress(object sender, KeyPressEventArgs e)
434 | {
435 | //string newTextSpace = richTextBoxTextValue.Text;
436 | //richTextBoxTextValue.Text = newTextSpace.Insert(0, " ");
437 | }
438 |
439 | //THIS IS USED TO OPEN ONLY ONE INSTANCE OF THE CONVERSION TABLE AND IF ITS CREATED BRING TO FRONT
440 | // Conversion_Table conTable = null;
441 | private HexChart hexTable;
442 | private void button1_Click(object sender, EventArgs e)
443 | {
444 | // Conversion_Table conTable = new Conversion_Table();
445 | if (hexTable == null || (hexTable != null && hexTable.IsDisposed))
446 | {
447 | hexTable = new HexChart();
448 | hexTable.Show();
449 | // MessageBox.Show("disposed");
450 | }
451 | if (hexTable.WindowState == FormWindowState.Minimized)
452 | {
453 | hexTable.WindowState = FormWindowState.Normal;
454 | }
455 | else
456 | {
457 | hexTable.BringToFront();
458 | // MessageBox.Show("bring to front");
459 | }
460 | }
461 | //copy paste hex to dec
462 | private void copyToolStripMenuItem_Click(object sender, EventArgs e)
463 | {
464 | if (richTextBoxTestHex.SelectedText == "" && richTextBoxTestHex.Text != "")
465 | {
466 | Clipboard.SetText(richTextBoxTestHex.Text);
467 | }
468 | if (richTextBoxTestHex.SelectedText != "")
469 | {
470 | Clipboard.SetText(richTextBoxTestHex.SelectedText);
471 | }
472 | }
473 |
474 | private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
475 | {
476 | richTextBoxTestHex.Text += Clipboard.GetText();
477 | }
478 |
479 | //copy paste hex to ascii
480 | private void copyToolStripMenuItem1_Click(object sender, EventArgs e)
481 | {
482 | if (richTextBoxHex2.SelectedText == "" && richTextBoxHex2.Text != "")
483 | {
484 | Clipboard.SetText(richTextBoxHex2.Text);
485 | }
486 | if (richTextBoxHex2.SelectedText != "")
487 | {
488 | Clipboard.SetText(richTextBoxHex2.SelectedText);
489 | }
490 |
491 | }
492 |
493 | private void pasteToolStripMenuItem1_Click(object sender, EventArgs e)
494 | {
495 | richTextBoxHex2.Text += Clipboard.GetText();
496 | }
497 | //copy paste dec to hex
498 | private void copyToolStripMenuItem2_Click(object sender, EventArgs e)
499 | {
500 | if (richTextBoxDecToHex.SelectedText == "" && richTextBoxDecToHex.Text != "")
501 | {
502 | Clipboard.SetText(richTextBoxDecToHex.Text);
503 | }
504 | if (richTextBoxDecToHex.SelectedText != "")
505 | {
506 | Clipboard.SetText(richTextBoxDecToHex.SelectedText);
507 | }
508 | }
509 |
510 | private void pasteToolStripMenuItem2_Click(object sender, EventArgs e)
511 | {
512 | richTextBoxDecToHex.Text += Clipboard.GetText();
513 | }
514 |
515 | private void copyToolStripMenuItem3_Click(object sender, EventArgs e)
516 | {
517 | if (richTextBoxTextValue.SelectedText == "" && richTextBoxTextValue.Text != "")
518 | {
519 | Clipboard.SetText(richTextBoxTextValue.Text);
520 | }
521 | if (richTextBoxTextValue.SelectedText != "")
522 | {
523 | Clipboard.SetText(richTextBoxTextValue.SelectedText);
524 | }
525 | }
526 |
527 | private void pasteToolStripMenuItem3_Click(object sender, EventArgs e)
528 | {
529 | richTextBoxTextValue.Text += Clipboard.GetText();
530 | }
531 |
532 | private void checkBoxBringToFront_CheckedChanged(object sender, EventArgs e)
533 | {
534 | if (checkBoxBringToFront.Checked == true)
535 | {
536 | TopMost = true;
537 | }
538 | if (checkBoxBringToFront.Checked == false)
539 | {
540 | TopMost = false;
541 | }
542 | }
543 | }
544 | }
545 |
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/ChecksumCalc.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace Serial_Comm_Tester
2 | {
3 | partial class ChecksumCalc
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.listView1 = new System.Windows.Forms.ListView();
32 | this.CRC_Version = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
33 | this.CRC_Result = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
34 | this.btnExit = new System.Windows.Forms.Button();
35 | this.btnClear = new System.Windows.Forms.Button();
36 | this.btnCalculateCRC = new System.Windows.Forms.Button();
37 | this.txtBCalculateValue = new System.Windows.Forms.TextBox();
38 | this.label1 = new System.Windows.Forms.Label();
39 | this.checkBoxBringToFront = new System.Windows.Forms.CheckBox();
40 | this.ckBHexValueCRC = new System.Windows.Forms.CheckBox();
41 | this.ckBStringValueCRC = new System.Windows.Forms.CheckBox();
42 | this.label2 = new System.Windows.Forms.Label();
43 | this.comBoCRC8 = new System.Windows.Forms.ComboBox();
44 | this.comBoCRC16 = new System.Windows.Forms.ComboBox();
45 | this.label3 = new System.Windows.Forms.Label();
46 | this.comBoCRC32 = new System.Windows.Forms.ComboBox();
47 | this.label4 = new System.Windows.Forms.Label();
48 | this.ckBWhiteSpaceCharacters = new System.Windows.Forms.CheckBox();
49 | this.label5 = new System.Windows.Forms.Label();
50 | this.label6 = new System.Windows.Forms.Label();
51 | this.label7 = new System.Windows.Forms.Label();
52 | this.label8 = new System.Windows.Forms.Label();
53 | this.SuspendLayout();
54 | //
55 | // listView1
56 | //
57 | this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
58 | this.CRC_Version,
59 | this.CRC_Result});
60 | this.listView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
61 | this.listView1.FullRowSelect = true;
62 | this.listView1.GridLines = true;
63 | this.listView1.Location = new System.Drawing.Point(11, 12);
64 | this.listView1.Name = "listView1";
65 | this.listView1.Size = new System.Drawing.Size(593, 267);
66 | this.listView1.TabIndex = 0;
67 | this.listView1.UseCompatibleStateImageBehavior = false;
68 | this.listView1.View = System.Windows.Forms.View.Details;
69 | //
70 | // CRC_Version
71 | //
72 | this.CRC_Version.Text = "CRC Version / Checksum";
73 | this.CRC_Version.Width = 247;
74 | //
75 | // CRC_Result
76 | //
77 | this.CRC_Result.Text = "CRC Result / Checksum";
78 | this.CRC_Result.Width = 349;
79 | //
80 | // btnExit
81 | //
82 | this.btnExit.BackColor = System.Drawing.Color.Red;
83 | this.btnExit.Cursor = System.Windows.Forms.Cursors.Hand;
84 | this.btnExit.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Lime;
85 | this.btnExit.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
86 | this.btnExit.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
87 | this.btnExit.Location = new System.Drawing.Point(481, 633);
88 | this.btnExit.Name = "btnExit";
89 | this.btnExit.Size = new System.Drawing.Size(122, 40);
90 | this.btnExit.TabIndex = 6;
91 | this.btnExit.Text = "CLOSE";
92 | this.btnExit.UseVisualStyleBackColor = false;
93 | this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
94 | //
95 | // btnClear
96 | //
97 | this.btnClear.BackColor = System.Drawing.Color.Yellow;
98 | this.btnClear.Cursor = System.Windows.Forms.Cursors.Hand;
99 | this.btnClear.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Lime;
100 | this.btnClear.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
101 | this.btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
102 | this.btnClear.Location = new System.Drawing.Point(220, 633);
103 | this.btnClear.Name = "btnClear";
104 | this.btnClear.Size = new System.Drawing.Size(122, 40);
105 | this.btnClear.TabIndex = 8;
106 | this.btnClear.Text = "Clear All";
107 | this.btnClear.UseVisualStyleBackColor = false;
108 | this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
109 | //
110 | // btnCalculateCRC
111 | //
112 | this.btnCalculateCRC.BackColor = System.Drawing.Color.Chartreuse;
113 | this.btnCalculateCRC.Cursor = System.Windows.Forms.Cursors.Hand;
114 | this.btnCalculateCRC.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Lime;
115 | this.btnCalculateCRC.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
116 | this.btnCalculateCRC.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
117 | this.btnCalculateCRC.Location = new System.Drawing.Point(11, 633);
118 | this.btnCalculateCRC.Name = "btnCalculateCRC";
119 | this.btnCalculateCRC.Size = new System.Drawing.Size(193, 40);
120 | this.btnCalculateCRC.TabIndex = 7;
121 | this.btnCalculateCRC.Text = "Calculate CRC";
122 | this.btnCalculateCRC.UseVisualStyleBackColor = false;
123 | this.btnCalculateCRC.Click += new System.EventHandler(this.btnCalculateCRC_Click);
124 | //
125 | // txtBCalculateValue
126 | //
127 | this.txtBCalculateValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
128 | this.txtBCalculateValue.Location = new System.Drawing.Point(10, 509);
129 | this.txtBCalculateValue.Name = "txtBCalculateValue";
130 | this.txtBCalculateValue.Size = new System.Drawing.Size(593, 22);
131 | this.txtBCalculateValue.TabIndex = 9;
132 | //
133 | // label1
134 | //
135 | this.label1.AutoSize = true;
136 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
137 | this.label1.Location = new System.Drawing.Point(256, 490);
138 | this.label1.Name = "label1";
139 | this.label1.Size = new System.Drawing.Size(117, 16);
140 | this.label1.TabIndex = 10;
141 | this.label1.Text = "Calculate Value";
142 | //
143 | // checkBoxBringToFront
144 | //
145 | this.checkBoxBringToFront.AutoSize = true;
146 | this.checkBoxBringToFront.BackColor = System.Drawing.Color.DarkGray;
147 | this.checkBoxBringToFront.Cursor = System.Windows.Forms.Cursors.Hand;
148 | this.checkBoxBringToFront.Location = new System.Drawing.Point(369, 646);
149 | this.checkBoxBringToFront.Name = "checkBoxBringToFront";
150 | this.checkBoxBringToFront.Size = new System.Drawing.Size(93, 17);
151 | this.checkBoxBringToFront.TabIndex = 35;
152 | this.checkBoxBringToFront.Text = "Bring To Front";
153 | this.checkBoxBringToFront.UseVisualStyleBackColor = false;
154 | this.checkBoxBringToFront.CheckedChanged += new System.EventHandler(this.checkBoxBringToFront_CheckedChanged);
155 | //
156 | // ckBHexValueCRC
157 | //
158 | this.ckBHexValueCRC.AutoSize = true;
159 | this.ckBHexValueCRC.Cursor = System.Windows.Forms.Cursors.Hand;
160 | this.ckBHexValueCRC.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
161 | this.ckBHexValueCRC.Location = new System.Drawing.Point(10, 557);
162 | this.ckBHexValueCRC.Name = "ckBHexValueCRC";
163 | this.ckBHexValueCRC.Size = new System.Drawing.Size(369, 20);
164 | this.ckBHexValueCRC.TabIndex = 37;
165 | this.ckBHexValueCRC.Text = "Get Hex Value (example : 1 hex is a 0x01 value)";
166 | this.ckBHexValueCRC.UseVisualStyleBackColor = true;
167 | //
168 | // ckBStringValueCRC
169 | //
170 | this.ckBStringValueCRC.AutoSize = true;
171 | this.ckBStringValueCRC.Cursor = System.Windows.Forms.Cursors.Hand;
172 | this.ckBStringValueCRC.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
173 | this.ckBStringValueCRC.Location = new System.Drawing.Point(10, 587);
174 | this.ckBStringValueCRC.Name = "ckBStringValueCRC";
175 | this.ckBStringValueCRC.Size = new System.Drawing.Size(380, 20);
176 | this.ckBStringValueCRC.TabIndex = 38;
177 | this.ckBStringValueCRC.Text = "Get String Value (This will convert the text to bytes)";
178 | this.ckBStringValueCRC.UseVisualStyleBackColor = true;
179 | //
180 | // label2
181 | //
182 | this.label2.AutoSize = true;
183 | this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
184 | this.label2.Location = new System.Drawing.Point(51, 288);
185 | this.label2.Name = "label2";
186 | this.label2.Size = new System.Drawing.Size(143, 16);
187 | this.label2.TabIndex = 39;
188 | this.label2.Text = "CRC 8 polynomial : ";
189 | //
190 | // comBoCRC8
191 | //
192 | this.comBoCRC8.Cursor = System.Windows.Forms.Cursors.Hand;
193 | this.comBoCRC8.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
194 | this.comBoCRC8.FormattingEnabled = true;
195 | this.comBoCRC8.Items.AddRange(new object[] {
196 | "CRC8 = 0x07",
197 | "CRC8_DVB = 0xD5",
198 | "CRC8_SAE_J1850 = 0x1D"});
199 | this.comBoCRC8.Location = new System.Drawing.Point(200, 285);
200 | this.comBoCRC8.Name = "comBoCRC8";
201 | this.comBoCRC8.Size = new System.Drawing.Size(377, 24);
202 | this.comBoCRC8.TabIndex = 40;
203 | this.comBoCRC8.SelectedIndexChanged += new System.EventHandler(this.comBoCRC8_SelectedIndexChanged);
204 | //
205 | // comBoCRC16
206 | //
207 | this.comBoCRC16.Cursor = System.Windows.Forms.Cursors.Hand;
208 | this.comBoCRC16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
209 | this.comBoCRC16.FormattingEnabled = true;
210 | this.comBoCRC16.Items.AddRange(new object[] {
211 | "CRC_16_CCITT_ZERO = 0x1021",
212 | "CRC_16_XMODEM = 0x1021",
213 | "CRC_16_CCITT_FALSE = 0x1021",
214 | "CRC_16_AUG_CCITT = 0x1021",
215 | "CRC_16_TELEDISK = 0xAO97",
216 | "CRC_16_T10_DIF = 0x8BB7",
217 | "CRC_16_DECT_X = 0x589",
218 | "CRC_16_DDS_110 = 0x8005",
219 | "CRC_16_CDMA2000 = 0xC867",
220 | "CRC_16_BUYPASS = Ox8005",
221 | "CRC_16_MODBUS = 0xA001"});
222 | this.comBoCRC16.Location = new System.Drawing.Point(200, 315);
223 | this.comBoCRC16.Name = "comBoCRC16";
224 | this.comBoCRC16.Size = new System.Drawing.Size(377, 24);
225 | this.comBoCRC16.TabIndex = 42;
226 | //
227 | // label3
228 | //
229 | this.label3.AutoSize = true;
230 | this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
231 | this.label3.Location = new System.Drawing.Point(39, 318);
232 | this.label3.Name = "label3";
233 | this.label3.Size = new System.Drawing.Size(155, 16);
234 | this.label3.TabIndex = 41;
235 | this.label3.Text = "CRC 16 polynomial : ";
236 | //
237 | // comBoCRC32
238 | //
239 | this.comBoCRC32.Cursor = System.Windows.Forms.Cursors.Hand;
240 | this.comBoCRC32.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
241 | this.comBoCRC32.FormattingEnabled = true;
242 | this.comBoCRC32.Items.AddRange(new object[] {
243 | "CRC32 = 0x04C11DB7"});
244 | this.comBoCRC32.Location = new System.Drawing.Point(200, 345);
245 | this.comBoCRC32.Name = "comBoCRC32";
246 | this.comBoCRC32.Size = new System.Drawing.Size(377, 24);
247 | this.comBoCRC32.TabIndex = 44;
248 | //
249 | // label4
250 | //
251 | this.label4.AutoSize = true;
252 | this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
253 | this.label4.Location = new System.Drawing.Point(43, 348);
254 | this.label4.Name = "label4";
255 | this.label4.Size = new System.Drawing.Size(151, 16);
256 | this.label4.TabIndex = 43;
257 | this.label4.Text = "CRC 32 polynomial : ";
258 | //
259 | // ckBWhiteSpaceCharacters
260 | //
261 | this.ckBWhiteSpaceCharacters.AutoSize = true;
262 | this.ckBWhiteSpaceCharacters.BackColor = System.Drawing.Color.DarkGoldenrod;
263 | this.ckBWhiteSpaceCharacters.Location = new System.Drawing.Point(415, 557);
264 | this.ckBWhiteSpaceCharacters.Name = "ckBWhiteSpaceCharacters";
265 | this.ckBWhiteSpaceCharacters.Size = new System.Drawing.Size(188, 17);
266 | this.ckBWhiteSpaceCharacters.TabIndex = 45;
267 | this.ckBWhiteSpaceCharacters.Text = "Calculate white spaces characters";
268 | this.ckBWhiteSpaceCharacters.UseVisualStyleBackColor = false;
269 | //
270 | // label5
271 | //
272 | this.label5.AutoSize = true;
273 | this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
274 | this.label5.Location = new System.Drawing.Point(68, 378);
275 | this.label5.Name = "label5";
276 | this.label5.Size = new System.Drawing.Size(155, 16);
277 | this.label5.TabIndex = 46;
278 | this.label5.Text = "2s Complement : 8bit ";
279 | //
280 | // label6
281 | //
282 | this.label6.AutoSize = true;
283 | this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
284 | this.label6.Location = new System.Drawing.Point(68, 408);
285 | this.label6.Name = "label6";
286 | this.label6.Size = new System.Drawing.Size(163, 16);
287 | this.label6.TabIndex = 47;
288 | this.label6.Text = "2s Complement : 16bit ";
289 | //
290 | // label7
291 | //
292 | this.label7.AutoSize = true;
293 | this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
294 | this.label7.Location = new System.Drawing.Point(17, 468);
295 | this.label7.Name = "label7";
296 | this.label7.Size = new System.Drawing.Size(202, 16);
297 | this.label7.TabIndex = 48;
298 | this.label7.Text = "Block Check Character : 8bit";
299 | //
300 | // label8
301 | //
302 | this.label8.AutoSize = true;
303 | this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
304 | this.label8.Location = new System.Drawing.Point(95, 438);
305 | this.label8.Name = "label8";
306 | this.label8.Size = new System.Drawing.Size(124, 16);
307 | this.label8.TabIndex = 49;
308 | this.label8.Text = "Modulo 256 : 8bit";
309 | //
310 | // ChecksumCalc
311 | //
312 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
313 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
314 | this.BackColor = System.Drawing.Color.DarkGray;
315 | this.ClientSize = new System.Drawing.Size(635, 685);
316 | this.Controls.Add(this.label8);
317 | this.Controls.Add(this.label7);
318 | this.Controls.Add(this.label6);
319 | this.Controls.Add(this.label5);
320 | this.Controls.Add(this.ckBWhiteSpaceCharacters);
321 | this.Controls.Add(this.comBoCRC32);
322 | this.Controls.Add(this.label4);
323 | this.Controls.Add(this.comBoCRC16);
324 | this.Controls.Add(this.label3);
325 | this.Controls.Add(this.comBoCRC8);
326 | this.Controls.Add(this.label2);
327 | this.Controls.Add(this.ckBStringValueCRC);
328 | this.Controls.Add(this.ckBHexValueCRC);
329 | this.Controls.Add(this.checkBoxBringToFront);
330 | this.Controls.Add(this.label1);
331 | this.Controls.Add(this.txtBCalculateValue);
332 | this.Controls.Add(this.btnClear);
333 | this.Controls.Add(this.btnCalculateCRC);
334 | this.Controls.Add(this.btnExit);
335 | this.Controls.Add(this.listView1);
336 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
337 | this.MaximizeBox = false;
338 | this.MinimizeBox = false;
339 | this.Name = "ChecksumCalc";
340 | this.ShowIcon = false;
341 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
342 | this.Text = "ChecksumCalc";
343 | this.ResumeLayout(false);
344 | this.PerformLayout();
345 |
346 | }
347 |
348 | #endregion
349 |
350 | private System.Windows.Forms.ListView listView1;
351 | private System.Windows.Forms.ColumnHeader CRC_Version;
352 | private System.Windows.Forms.ColumnHeader CRC_Result;
353 | private System.Windows.Forms.Button btnExit;
354 | private System.Windows.Forms.Button btnClear;
355 | private System.Windows.Forms.Button btnCalculateCRC;
356 | private System.Windows.Forms.TextBox txtBCalculateValue;
357 | private System.Windows.Forms.Label label1;
358 | private System.Windows.Forms.CheckBox checkBoxBringToFront;
359 | private System.Windows.Forms.CheckBox ckBHexValueCRC;
360 | private System.Windows.Forms.CheckBox ckBStringValueCRC;
361 | private System.Windows.Forms.Label label2;
362 | private System.Windows.Forms.ComboBox comBoCRC8;
363 | private System.Windows.Forms.ComboBox comBoCRC16;
364 | private System.Windows.Forms.Label label3;
365 | private System.Windows.Forms.ComboBox comBoCRC32;
366 | private System.Windows.Forms.Label label4;
367 | private System.Windows.Forms.CheckBox ckBWhiteSpaceCharacters;
368 | private System.Windows.Forms.Label label5;
369 | private System.Windows.Forms.Label label6;
370 | private System.Windows.Forms.Label label7;
371 | private System.Windows.Forms.Label label8;
372 | }
373 | }
--------------------------------------------------------------------------------
/Serial Comm Tester - V2/AboutBox1.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 |
123 | R0lGODlhgAH7AIcAAAAAAPf3939/fzMzM7+/vx8fH9fX109PT4+Pj+/v7w8PD6+vrz8/P8zMzGZmZpmZ
124 | mScnJ9/f32ZmZgcHB////1hYWD09Pf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
134 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
136 | ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQAAAAAACwAAAAAgAH7AAAI/wApCBxIsKDBgwgTKlzIsKHDhxAj
137 | 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
308 | B/RA75GAAAA7
309 |
310 |
311 |
--------------------------------------------------------------------------------