{"id":555,"date":"2018-04-04T19:43:35","date_gmt":"2018-04-04T19:43:35","guid":{"rendered":"http:\/\/hayperek.pl\/?p=555"},"modified":"2018-04-04T19:43:35","modified_gmt":"2018-04-04T19:43:35","slug":"diagnostyka-obd-cz-2","status":"publish","type":"post","link":"https:\/\/hayperek.pl\/en\/2018\/04\/04\/diagnostyka-obd-cz-2\/","title":{"rendered":"Diagnostyka OBD &#8211; cz.2"},"content":{"rendered":"<p>Rozwa\u017cania na temat zastosowania gotowej obs\u0142ugi protoko\u0142u diagnostycznego si\u0119gaj\u0105 pocz\u0105tk\u00f3w projektu HypeFIS. W Sieci dost\u0119pnych jest co najmniej kilkana\u015bcie r\u00f3\u017cnych implementacji protoko\u0142u KWP1281\/2000 &#8211; mniej lub bardziej zaawansowanych. Na wst\u0119pie odrzuci\u0142em wszystkie zwi\u0105zane z platform\u0105 Arduino, kt\u00f3re ze wzgl\u0119du na specyficzn\u0105 struktur\u0119 API tego \u015brodowiska s\u0105 zupe\u0142nie nieprzydatne w przyj\u0119tym przez nas sposobie strukturyzacji kodu. Inn\u0105 wad\u0105, dyskwalifikuj\u0105c\u0105 prawie wszystkie pozosta\u0142e przyk\u0142ady jest cz\u0119ste przeplatanie si\u0119 w nich kodu stricte aplikacyjnego z niskopoziomowym kodem drivera, czy dekodera protoko\u0142u. Jest to niestety wsp\u00f3lna cecha ka\u017cdego kawa\u0142ka kodu, kt\u00f3ry piszemy &#8222;ad hoc&#8221;, na kolanie, byle tylko spe\u0142ni\u0142 swoj\u0105 rol\u0119. <\/p>\n<p>C\u00f3\u017c wi\u0119c mi pozosta\u0142o? Zabra\u0142em si\u0119 za napisanie w\u0142asnej wersji. O skali trudno\u015bci tego przedsi\u0119wzi\u0119cia \u015bwiadczy\u0107 mo\u017ce fakt, i\u017c oprogramowanie podstawowych funkcjonalno\u015bci zaj\u0119\u0142o mi oko\u0142o dw\u00f3ch miesi\u0119cy. Sporo czasu po\u015bwi\u0119ci\u0142em tak\u017ce na dopracowanie kwestii zwi\u0105zanych ze stabilno\u015bci\u0105 po\u0142\u0105czenia czy obs\u0142ug\u0105 nietypowych sterownik\u00f3w oraz poprawienia wszelki zauwa\u017conych b\u0142\u0119d\u00f3w. Implementacja ta funkcjonuje ju\u017c od kilku lat w projekcie HypeFIS. Z punktu widzenia in\u017cynierii oprogramowania jest wi\u0119c kodem dojrza\u0142ym, dobrze przetestowanym oraz zawieraj\u0105cym wiele &#8222;know-how&#8221;. S\u0105 to g\u0142\u00f3wne powody, dla kt\u00f3rych zdecydowa\u0142em si\u0119 wykorzysta\u0107 go ponownie w naszym urz\u0105dzeniu.<\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2-1024x629.png\" alt=\"\" width=\"720\" height=\"442\" class=\"aligncenter size-large wp-image-566\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2-1024x629.png 1024w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2-600x368.png 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2-300x184.png 300w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2-768x471.png 768w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/04\/kwp_2.png 1186w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Poprawnie zaprojektowana struktura, o kt\u00f3rej wspomina\u0142em we wczorajszym artykule, pozwala niezwykle \u0142atwo osadzi\u0107 implementacj\u0119 protoko\u0142u KWP1281\/2000 wraz z demonem na nowej platformie. Jedynym wymaganym elementem jest nowy driver, zapewniaj\u0105cy wsp\u00f3\u0142prac\u0119 ze sprz\u0119tem. Sam rdze\u0144 pozostaje niezmieniony &#8211; jest to efekt braku bezpo\u015brednich odwo\u0142a\u0144 do sprz\u0119tu, &#8222;wplecionych&#8221; w kod aplikacyjny. W planach by\u0142a r\u00f3wnie\u017c pr\u00f3ba uruchomienia po\u0142\u0105czenia diagnostycznego, jednak z powodu braku czasu skupi\u0142em si\u0119 na samym przeportowaniu kodu.<\/p>\n<p>Jaka nauka p\u0142ynie z dzisiejszej lekcji? Przemy\u015blana struktura kodu wp\u0142ywa nie tylko na jego czytelno\u015bci, ale jest te\u017c kluczem do uzyskania przeno\u015bno\u015bci kodu mi\u0119dzy platformami. <\/p>","protected":false},"excerpt":{"rendered":"<p>Rozwa\u017cania na temat zastosowania gotowej obs\u0142ugi protoko\u0142u diagnostycznego si\u0119gaj\u0105 pocz\u0105tk\u00f3w projektu HypeFIS. W Sieci dost\u0119pnych jest co najmniej kilkana\u015bcie r\u00f3\u017cnych implementacji protoko\u0142u KWP1281\/2000 &#8211; mniej lub bardziej zaawansowanych. Na wst\u0119pie odrzuci\u0142em wszystkie zwi\u0105zane z platform\u0105 Arduino, kt\u00f3re ze wzgl\u0119du na specyficzn\u0105 struktur\u0119 API tego \u015brodowiska s\u0105 zupe\u0142nie nieprzydatne w przyj\u0119tym przez nas sposobie strukturyzacji kodu. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":569,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-555","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-stodni","9":"post-with-thumbnail","10":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/comments?post=555"}],"version-history":[{"count":4,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/555\/revisions"}],"predecessor-version":[{"id":570,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/555\/revisions\/570"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media\/569"}],"wp:attachment":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media?parent=555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/categories?post=555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/tags?post=555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}