• Ремонт автомобилей к месту расположения автомобиля

  • Без выходных с 8:00 до 19:00

  • Ремонт, автомобилей.

  • Компьютерная электронных блоков автомобилей.

  • Ремонт автомобилей.

  • Прошивка безопасности.

  • Замена, ( мозги ) двигателя.

  • Корректировка приборов.

  • сажевого фильтра .

  • магнитолы, навигации.

  • автомобилей.

 Скачать проект в VS2010

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ScanerCANbus
{
public partial class Form1 : Form
{
//Импорт DLL файлов для консоли
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool AllocConsole();
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool FreeConsole();

//Флаг для работы с процессом принятия байтов в консоль
public bool testConsole = false;

byte[] bw = new byte[1];

public Form1()
{
InitializeComponent();
//Онуляем значение байта для передачи в COMport
bw[0] = 0;
//Кнопки не активны при запуске формы
buttonFreeConsole.Enabled = false;
buttonStartScanner500.Enabled = false;
buttonStartScanner250.Enabled = false;
buttonStopScanner.Enabled = false;

}

private void buttonOpenConsole_Click(object sender, EventArgs e)
{
//Перемещаем окно программы,чтобы не мешала консоли
this.Location = new Point(800, 0);
//Открываем COM port
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();

}
catch
{
//Если COMport не открылся
MessageBox.Show(serialPort1.PortName);
return;
}
}
testConsole = true;
// Запускаем поток с консолью.
Task.Factory.StartNew(Console);
//Кнопки активные
buttonFreeConsole.Enabled = true;
buttonStartScanner500.Enabled = true;
buttonStopScanner.Enabled = true;
//Кнопка Закрыть не активна
buttonClose.Enabled = false;
//Убираем кнопку закрытия программы
this.ControlBox = false;
buttonOpenConsole.Enabled = false;
}

private void buttonFreeConsole_Click(object sender, EventArgs e)
{
bw[0] = 0x0c;
serialPort1.Write(bw, 0, bw.Length);
//Закрываем консоль
testConsole = false;
//Делаем кнопки не активными
buttonStartScanner500.Enabled = false;
buttonFreeConsole.Enabled = false;
buttonStopScanner.Enabled = false;
//Кнопка Закрыть активна
buttonClose.Enabled = true;
//Восстанавливаем кнопки контрола
this.ControlBox = true;
buttonOpenConsole.Enabled = true;
}

private void Console()
{
//ASCIIEncoding ascii = new ASCIIEncoding();
//Временная переменная для записи принятых байт в TextBox
string result = string.Empty;
//Новая строка
result += Environment.NewLine;
// Запускаем консоль.
if (AllocConsole())
{
System.Console.SetWindowSize(42, 59);
System.Console.BackgroundColor = ConsoleColor.Blue;
//Счетчик
int count = 0;
while (testConsole)
{
if (serialPort1.BytesToRead !=0) //Если буффер приема байт не пуст
{
//byte[] bc = new byte[1];
byte b = (byte)serialPort1.ReadByte(); //Принимаем 1 байт
if (b < 0x10) //Добавим 0,т.к. ToString("X") не ставит 0 перед: от 0 до 0х0F
result += "0";
result += b.ToString("X"); //Преобразуем в HEX
result += " ";
if (b < 0x10)
System.Console.Write("0");
System.Console.Write(b.ToString("X"));
//bc[0] =b;

//System.Console.Write(ascii.GetString(bc,0,1));
System.Console.Write(" ");
count++;
if (count == 2) //Расставим пробелы, чтобы сообщение имело вид CAN
{
System.Console.Write(" ");
result += " ";
}
if (count == 4)
{
System.Console.Write(" ");
result += " ";
}
if (count == 5)
{
System.Console.Write(" ");
result += " ";
}
if (count == 13)
{
System.Console.Write(Environment.NewLine);
result += Environment.NewLine;
count = 0;
}
}
}
//Закроем консоль
FreeConsole();
// Выводим данные в textBox
Action action = () => textBox1.Text += result;
if (InvokeRequired)
Invoke(action);
else
action();
}
}
private void buttonSendByte_Click(object sender, EventArgs e)
{
//Для теста отправим байт в COMport-такой же байт должен вернуть контроллер
serialPort1.Write(bw, 0, 1);
//Увеличим на 1 байт,чтобы при нажатии кнопки второй раз,отправить другой байт
bw[0]++;
}

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//Если вводить символы с клавиатуры в TextBox, то они будут отправляться в COMport и обратно в консоль
bw[0] = (byte)e.KeyCode;
serialPort1.Write(bw, 0, bw.Length);
}

private void buttonClose_Click(object sender, EventArgs e)
{
//если COMport открыт - закрываем его.
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
//Закрываем Форму
this.Close();
}

private void buttonSwitchLed_Click(object sender, EventArgs e)
{
bw[0] = 0x0a;
serialPort1.Write(bw, 0, bw.Length);
}

private void buttonStopScanner_Click(object sender, EventArgs e)
{
bw[0] = 0x0c;
serialPort1.Write(bw, 0, bw.Length);
}

private void buttonStartScanner250_Click(object sender, EventArgs e)
{
bw[0] = 0x0d;
serialPort1.Write(bw, 0, bw.Length);
}

private void buttonStartScanner500_Click(object sender, EventArgs e)
{
bw[0] = 0x0b;
serialPort1.Write(bw, 0, bw.Length);
}
}
}

Работы

Мы занимаемся только ремонтом автомобилей.