Veriyi direk unhexify yapın, eğer gelen veri hex değil ise size
exception fırlatacaktır, bu durumda veri string demektir.

data = sock.recv(1024)
try:
     data = binascii.unhexlify(data)
except ValueError e:
    print("gelen data string")




2016-09-05 16:51 GMT+03:00 Sencer Hamarat <[email protected]>:
> Düzenli ifadeler ile yapmayı ben de düşündüm ama sıkıntı gelen verilerin
> şekilleri, boyutları cihazdan cihaza hatta durumdan duruma her bir cihazda
> dahi değişiklik gösteriyor olması. Bu yüzden gelen verinin tipini doğrudan
> söyleyecek bir method var mı diye bakınıyorum. Yoksa her gelen veri için
> pattern oluşturmam gerekebilir.
>
> Bazılarında ham binary veri bu şekilde gelirken:
>
> "+PSR\x00\x00\x01\x00.\x101V\x15]\x02\x16\x0c\x064\x9\x01\x00
> \x0bQ\x01\x01\x00\x1f\x07\x01\xbTq\x02lx%\x07\xe0\t\x05\r'\t\x00\x00\x00\x00\x00\x07\xe0\t\x05\r'\n\xkJ2\x126\r\n"
>
> Bazılarında da bu şekilde gelmekte:
>
> '\x00\x00\x00\x00?\x08\x01\x00\x00\x01V\xfa\x90\x00\x10%\x9e4\x05\x00\t\x003\x10\x00\n\x00\t\x05\x01\x00\x02\x00\x01\x02\t\x00\x00B/\xae\x01\x01N\x00\x00\x00\x01\x00\x00\xczS'
>
>
> Saygılarımla,
> Sencer HAMARAT
>
>
> 2016-09-05 16:32 GMT+03:00 Samed YILDIRIM <[email protected]>:
>>
>> Merhabalar,
>>
>> Hex olarak gelen veriye uygun bir desen yazarak düzenli ifadeler ile
>> kontrol ederek bunu yaparsınız. Eğer gelen veri yazdığınız desene uyuyorsa
>> ek olarak data = binascii.hexlify(data) satırını işletirsiniz olur biter.
>>
>> İyi çalışmalar.
>> Samed YILDIRIM
>>
>>
>> 05.09.2016, 16:19, "Sencer Hamarat" <[email protected]>:
>>
>>  Merhabalar,
>>
>>  Elimde soket bağlantısı ile sunucuya TCP/IP üzerinden veri gönderen
>> cihazlar var.
>>  Bu cihazların bazıları Binary encoded HEX string gönderirken bazıları
>> ASCII string göndermekte.
>>
>>  Misal;
>>
>>  data = socket.recv(1024)
>>
>>  satırı ile veri aldığımda eğer gelen veri ASCII string ise doğrudan
>> işlemeye başlıyorum
>>  Eğer Binary encoded HEX string ise
>>
>>  data = binascii.hexlify(data)
>>
>>  metodu ile gelen veriyi HEX string'e çevirdikten sonra gerekli işlemlere
>> tabi tutuyorum.
>>  Bunu yapabilmek için de iki ayrı script çalıştırılması gerekiyor. Ben ise
>> bu işin tek scriptte yapabileceğini düşünüyorum. Bu yüzden Python ile bu
>> gelen socket verilerin tiplerini anlamaknın yolunu arıyorum.
>>
>>  Saygılarımla,
>>  Sencer HAMARAT
>>  ,
>>
>>  _______________________________________________
>>  Linux-programlama mailing list
>>  [email protected]
>>  https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>  Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> [email protected]
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>



-- 
Saygılar && İyi Çalışmalar
Timu EREN ( a.k.a selam )
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap