PDA

View Full Version : کار با GPS دیتا لاگر بلوتوث و usb در c#



mahan206
چهارشنبه 21 مرداد 1394, 12:30 عصر
سلام دوستان من این جی پی اس (http://www.gpsgps.ir/eshop/products.php?19&cPath=5) رو خریدم الان میخوام با کد نویسی xو y رو بدست بیارم نمونه سورس هایی که سریال پورت بود تست کردم اما نشد درایوشم نصب کردم و الان پورت 9(com9)
میشه راهنمایی کنید.ممنون

mahan206
چهارشنبه 21 مرداد 1394, 15:33 عصر
من این رو بدست اوردم الان باید چطور تبدیلش کنم
$GPGGA,114952.000,3130.2969,N,05049.8750,E,1,6,1.0 6,1609.3,M,-19.3,M,,*4B

mahan206
چهارشنبه 21 مرداد 1394, 16:05 عصر
الان از این کد استفاده کردم و توقسمت تبدیل به دابل که میخواد nرو تبدیل کنه ارور میده
if (serialPort1.IsOpen)
{
string data = serialPort1.ReadExisting();
string[] strArr = data.Split('$');
for (int i = 0; i < strArr.Length; i++)
{
string strTemp = strArr[i];
string[] lineArr = strTemp.Split(',');
if (lineArr[0] == "GPGGA")
{

// try
// {
//Latitude
Double dLat = Convert.ToDouble(lineArr[2]);
//داخلش خط بالا قرار میگیره3130.2969
//که همون Nماست و اینجا ارور میده
dLat = dLat / 100;
string[] lat = dLat.ToString().Split('.');
Latitude = lineArr[3].ToString() + lat[0].ToString() + "." + ((Convert.ToDouble(lat[1]) / 60)).ToString("#####");

//Longitude
Double dLon = Convert.ToDouble(lineArr[4]);
dLon = dLon / 100;
string[] lon = dLon.ToString().Split('.');
Longitude = lineArr[5].ToString() + lon[0].ToString() + "." + ((Convert.ToDouble(lon[1]) / 60)).ToString("#####");

//Display
txtLat.Text = Latitude;
txtLong.Text = Longitude;

btnMapIt.Enabled = true;
// }
// catch
// {
//Can't Read GPS values
// txtLat.Text = "GPS Unavailable";
// txtLong.Text = "GPS Unavailable";
// btnMapIt.Enabled = false;
// }
}
}

jamal_ch
چهارشنبه 21 مرداد 1394, 16:07 عصر
سلام من با این جور دستگاها کار کاردم نمونش تلتونیکا هست معمولا یک رشته به hex برمیگردونه باید دیتاشیت دستگاه رو پیدا کنی تا از بسته سر در بیاری
ولی فرمت کلیش به این صورت هست که
اول بسته imi دستگاه بعد بقیه اطلاعات
توصیه میکنم اگه برای ردیابی میخوایی از دستگاهای تلتونیکا استفاده کن واقعا عالیه

mahan206
چهارشنبه 21 مرداد 1394, 18:22 عصر
مشکل حل شد با تغییراتی تو همین کد تشکر فقط گیر پیدا کردن خودکار سریال پورتم

jamal_ch
پنج شنبه 22 مرداد 1394, 07:57 صبح
سلام
به راحتی میتوان اینکار رو کرد
تو یک تایمر تمام پورت های موجود روی سیستم رو بگیر با دستور زیر

string[] ports = SerialPort.GetPortNames();


بعد تو یک بخق for چک کن ببین کدوم سریال پورت دیتا داره بعد که پیدا کردی انو به com پیش فرض برنامه تبدیل کن

foreach(string port in ports)
{
//چک کام پورت
}

mahan206
پنج شنبه 22 مرداد 1394, 11:04 صبح
تشکر دوست من میشه یه سورس کاملتر بزاری .راستی میگم تو ویندوز 7 جواب نمیده فقط تو 8.1 جواب داد.مشکل چیه؟
من از این سورس استفاده کردم برا پیدا کردن پورت فعال

string[] ArrayComPortsNames = null;
int index = -1;
string ComPortName = null;
ArrayComPortsNames = SerialPort.GetPortNames();
do
{
index += 1;
cboPorts.Items.Add(ArrayComPortsNames[index]);
}

while (!((ArrayComPortsNames[index] == ComPortName)
|| (index == ArrayComPortsNames.GetUpperBound(0))));
Array.Sort(ArrayComPortsNames);

//want to get first out
if (index == ArrayComPortsNames.GetUpperBound(0))
{
ComPortName = ArrayComPortsNames[0];
}
cboPorts.Text = ArrayComPortsNames[0];

تبسم ساینا
سه شنبه 02 آبان 1396, 11:51 صبح
یه سوال در همین کدی نوشته شده من این خطم خروجی بر نمیگردنه !
string data = serialPort1.ReadExisting();