ÔÚÕâ¸ö¼ò¶ÌµÄÖ¸ÄÏÖУ¬ÎÒÃǽ«½éÉÜU100½Ó¿ÚÉϵÄLEDµÄ¹¤×÷ÔÀíºÍʹÓ÷½Ê½¡£
×÷ÕߣºAnton Carlsson£¬Èí¼þ¿ª·¢ÈËÔ±
¹²Í¬×÷Õߣº?L-G Fredriksson£¬ÏÖ³¡Ó¦Óù¤³Ìʦ
°æ±¾£º?2021-08-09A
ÔÚÕâ¸ö¼ò¶ÌµÄÖ¸ÄÏÖУ¬ÎÒÃǽ«½éÉÜU100½Ó¿ÚÉϵÄLEDµÄ¹¤×÷ÔÀíºÍʹÓ÷½Ê½¡£
×÷ÕߣºAnton Carlsson£¬Èí¼þ¿ª·¢ÈËÔ±
¹²Í¬×÷Õߣº?L-G Fredriksson£¬ÏÖ³¡Ó¦Óù¤³Ìʦ
°æ±¾£º?2021-08-09A
±¾Ö¸ÄÏÊÊÓÃÓÚÄÇЩϣÍûͨ¹ýCANlibºÍcanlib Python°üÉèÖúÍʹÓÃÔÆº£ÓÎÏ· CAN½Ó¿ÚµÄÓû§¡£
ÔÚʹÓÃÕâ¸öÖ¸ÄÏǰ£¬Äú±ØÐëÓµÓÐÔÆº£ÓÎÏ· U100½Ó¿Ú¡£
ÔÚʹÓÃÕâ¸öÖ¸ÄÏ֮ǰ£¬ÎÒÃǽ¨ÒéÄúÔĶÁÒÔÏÂÄÚÈÝ£º
Èç¹ûÄúÖжÏÁ˲Ù×÷»òÍü¼ÇÁËʹÓõÄÃüÁî/Á÷³Ì£¬ÇëʹÓÃÒÔÏÂÇ¿´óµÄÃüÁîºÍ˵Ã÷ÁÐ±í¡£
Óëǰ¼¸´úÔÆº£ÓÎÏ·½Ó¿ÚÏà±È£¬U100½øÐÐÁËһЩ¸üС£³ýÁË±ÈÆäËûÉ豸¸ü¼Ó¼á¹ÌÖ®Í⣬×îÃ÷ÏԵı仯ÊǽӿÚÉϵÄLED¡£²»½öLEDÔڳߴçºÍÐÎ×´ÉÏ·¢ÉúÁ˱仯£¬ËüÃǵŤ×÷·½Ê½Ò²×ö³öÁ˵÷Õû¡£ÕâЩ±ä»¯Ê¹Óû§¸üÈÝÒ׿´µ½LED£¬²¢´ÓLED»ñÈ¡ÓйØÉ豸µÄ¸ü¶àÐÅÏ¢¡£
Ê×ÏÈ£¬Ö®Ç°µü´úµÄCAN½Ó¿ÚÓÐÁ½¸öLEDÓÃÓÚPW£¬Ã¿¸ö¿ÉÓõÄCANͨµÀÉϸ÷ÓÐÁ½¸öLED¡£È»¶ø£¬U100Ö»ÓÐÁ½¸öLEDÌõ£¬ÓÃÓÚÉ豸ÉÏΨһ¿ÉÓõÄCANͨµÀ¡£Ò»¸öLEDÌõÓÃÓÚTX£¬ÁíÒ»¸öLEDÌõÓÃÓÚRX¡£È»¶ø£¬ÕâЩLED¾ßÓиü¶àµÄ¹¦ÄÜ£¬¿ÉÒÔÏÔʾ¶àÖÖÑÕÉ«¡£
ÓëÒÔǰµÄÉ豸ÉÏÓµÓеÄÈýÖÖÑÕÉ«£¨»ÆÉ«¡¢ºìÉ«ºÍÂÌÉ«£©²»Í¬£¬U100¾ßÓÐÎåÖÖÑÕÉ«¡£ÕâЩÑÕÉ«°üÀ¨£º»ÆÉ«¡¢ÂÌÉ«¡¢ºìÉ«¡¢°×É«ºÍÀ¶É«¡£LEDÌõ¾ßÓÐÁ½¸ö×´Ì¬ÇøÓò£¬ÈçͼËùʾ£¬Ã¿ÌõָʾµÆÓÐÒ»¸ö×´Ì¬ÇøÓò¡£
µ±Ê×´ÎÁ¬½ÓU100ʱ£¬Á½¸öLEDÌõ»áÏÈ»ºÂýÉÁ˸һ´ÎÂ̹⣬Ȼºó×´Ì¬ÇøÓò»áÁÁÆð°×¹â¡£µ±Í¨µÀÉÏÏßʱ£¬°×É«×´Ì¬ÇøÓò½«±äΪÂÌÉ«¡£µ±U100½ÓÊÕ»ò·¢Ëͱ¨ÎÄʱ£¬ÆäÖÐÒ»¸ö×´Ì¬ÇøÓò½«ÉÁ˸»ÆÉ«¡£Èç¹ûÉ豸½ÓÊÕµ½±¨ÎÄ£¬RX×´Ì¬ÇøÓò½«ÉÁ˸»ÆÉ«¡£Èç¹ûÉ豸·¢Ëͱ¨ÎÄ£¬TX×´Ì¬ÇøÓò½«ÉÁ˸»ÆÉ«¡£Èç¹ûÔÚ´«Êä¹ý³ÌÖгöÏÖ´íÎó£¬LED½«ÔÚÒ»¶¨³Ì¶ÈÉÏÏÔʾÎÒÃǽÓÊÕµ½µÄ´íÎóÀàÐÍ¡£Èç¹ûÎÒÃdz¢ÊÔÔÚ×ÜÏßÉÏûÓÐÆäËûͨµÀµÄÇé¿öÏÂʹÓÃU100·¢Ëͱ¨ÎÄʱ£¬Í¨µÀ½«½øÈë´íÎó±»¶¯×´Ì¬£¬Á½¸ö×´Ì¬ÇøÓò¶¼»áÉÁ˸ºìÉ«¡£´ËÍ⣬ÓÉÓÚͨµÀÕýÔÚ´«Êä´íÎóÖ¡£¬TX LEDÌõ½«±äΪºìÉ«¡£Èç¹ûÎÒÃdz¢ÊÔÒÔ²»Æ¥ÅäµÄ±ÈÌØÂʶÁÈ¡±¨ÎÄ£¬×´Ì¬ÇøÓòÈÔ½«ÉÁ˸ºìÉ«¡£µ«ÊÇÓÉÓÚÎÒÃÇÏÖÔÚÕýÔÚ½ÓÊÕ´íÎóÖ¡£¬RX LEDÌõ½«±äΪºìÉ«£¬¶ø²»ÊÇTXµÆÌõ¡£
Èç¹ûÎÒÃÇÔö¼Ó×ÜÏ߸ºÔØ£¨Ôö¼Ó·¢Ë͵ı¨ÎÄÊýÁ¿£©£¬LEDָʾµÆÒ²»áËæÖ®ÁÁÆð¡£¸ù¾Ý×ÜÏ߸ºÔصIJ»Í¬£¬´ÓTX»òRX LEDµÄ×´Ì¬ÇøÓò¿ªÊ¼£¬¸ü¶àµÄLED½«ÁÁÆð»Æ¹â£¬ÕâÈ¡¾öÓÚÎÒÃÇÊÇÔÚ·¢ËÍ»¹ÊǽÓÊÕ¡£Òª²âÊÔLED£¬ÎÒÃÇ¿ÉÒÔ±àдÒÔϽű¾²¢½«ÆäÃüÃûΪu100.py¡£
> .\.venv\Scripts\activate
(pyproj)> py .\u100.py
import time
from canlib import canlib, Frame
# First create two frames with different id:s.
frame_a = Frame(id_=1, data=[72, 69, 76, 76, 79, 33])
frame_b = Frame(id_=2, data=[72, 69, 76, 76, 79, 33])
# Second, open two channels, one for the U100 and one for another interface.
# In this example the U100 is connected to channel 3 and a USBcan is
# connected to channel 2. And set their bitrate.
ch_a = canlib.openChannel(channel=2, bitrate=canlib.Bitrate.BITRATE_100K)
ch_b = canlib.openChannel(channel=3, bitrate=canlib.Bitrate.BITRATE_100K)
#set both channels to normal and go on bus.
ch_a.setBusOutputControl(canlib.Driver.NORMAL)
ch_b.setBusOutputControl(canlib.Driver.NORMAL)
ch_a.busOn()
ch_b.busOn()
# To get a clearer sense of what happens, you will need to press enter between
# each test.
input("Press enter to continue")
# In the first example we will transmit messages with the U100. In the
# second example we will receive messages with the U100. And in the third
# and last example we will both send and receive messages with the U100.
# In all examples we will send 50 messages, you can test to increase this
# number to see its effect.
for i in range(50):
# We will make use of the try function during these tests. The program will
# try to execute the commands within the try-block (the indented region
# underneath). If the program encounters an CanGeneralError (indicated by
# the except command) the program will instead execute the commands within
# the except block. In this example the messages might be sent to quickly
# and result in a CanGeneralError which is why we will wait for 0.1 seconds
# with time.sleep if this happens.
try:
# This is the try-block.
ch_b.write(frame_b)
ch_a.read(1000)
except canlib.exceptions.CanGeneralError:
# This is the except block.
time.sleep(0.1)
input("Press enter to continue")
for i in range(50):
try:
ch_a.write(frame_a)
ch_b.read(1000)
except canlib.exceptions.CanGeneralError:
time.sleep(0.1)
input("Press enter to continue")
for i in range(50):
try:
ch_b.write(frame_b)
ch_a.read(1000)
ch_a.write(frame_a)
ch_b.read(1000)
except canlib.exceptions.CanGeneralError:
time.sleep(0.1)
ch_a.close()
ch_b.close()
ÔÚ²âÊÔ¹ý³ÌÖУ¬TXºÍRXµÄLED½«ÁÁÆð¡£Èç¹ûÎÒÃÇÔö¼Ó±¨ÎĵÄÊýÁ¿£¨ÔÚÖ§³Ö·¶Î§ÄÚµÄÊýÁ¿£©£¬×ÜÏ߸ºÔؾͻáÔö¼Ó£¬¸ü¶àµÄLEDµÆ½«±ä³É»ÆÉ«¡£