<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ No.724 - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Tue, 21 Apr 2026 06:51:15 +0900</lastBuildDate>
	<generator><![CDATA[ <!-- てがろぐ Version: -->Powered by <a href="https://www.nishishi.com/cgi/tegalog/" target="_top">てがろぐ</a> Ver 3.4.0 ]]></generator>
	<!-- BEGIN ENTRIES -->
	<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　Python で Open DMX USB を動かすことに… ]]></title>
	<description><![CDATA[ 　Python で Open DMX USB を動かすことに成功しました。<br />　setbreakon と setbreakoff の挙動は予想の通りでした。<br />　以下がテストソースです。<br />　slot1 と slot512 を 0 から255 までカウントして終了します。<br /><small class="decorationS"><span class="decorationF deco-code">### Open DMX USB test ###<br />import ftd2xx as ftd<br />import time<br /><br />if __name__ == &apos;__main__&apos; &#58;<br />　baudrate = 250000<br />　word_length = 8<br />　stop_bit = 2<br />　parity = 0<br />　purge_tx = 2<br />　try &#58;<br />　　d = ftd.open( 0 )    # Open first FTDI device<br />　　d.setBaudRate( baudrate )<br />　　d.setDataCharacteristics( word_length, stop_bit, parity )<br />　　d.purge( purge_tx )<br />　　channelVals = bytearray( &#91; 0 &#93; * 513 )<br />　　channelVals&#91; 0 &#93; = 0 # start code<br />　　for i in range( 256 ) &#58;<br />　　　try &#58;<br />　　　　channelVals&#91; 1 &#93; = i<br />　　　　channelVals&#91; 512 &#93; = i<br />　　　　channelbytes = bytes( channelVals )<br />　　　　# Send Slot<br />　　　　cstart = time.perf_counter_ns( )<br />　　　　d.write( channelbytes )<br />　　　　while time.perf_counter_ns( ) - cstart &lt; 22800000 &#58;<br />　　　　　pass<br />　　　　# Break Time<br />　　　　d.setBreakOn( )<br />　　　　cstart = time.perf_counter_ns( )<br />　　　　while time.perf_counter_ns( ) - cstart &lt; 192000 &#58;<br />　　　　　pass<br />　　　　# Mark After Break<br />　　　　d.setBreakOff( )<br />　　　　cstart = time.perf_counter_ns( )<br />　　　　while time.perf_counter_ns( ) - cstart &lt; 12000 &#58;<br />　　　　　pass<br />　　　# Press Ctl+C to Exit<br />　　　except KeyboardInterrupt &#58;<br />　　　　break<br />　　d.close( )<br />　except &#58;<br />　　print( &apos;No Device&apos; )</span></small><br />　time.sleep() は求める精度に足りないので time.perf_counter_ns() を用いています。<br />　0 から 255 のカウントが5.9秒強で終わるので 43fps くらい。ほぼ規格最大値です。<br />　本当にコレでいいのかわからんけど、モヤモヤしてたのがスッキリした。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e5%99%a8%e5%85%b7%e3%81%ae%e8%a3%bd%e4%bd%9c" class="taglink" title="器具の製作">#器具の製作</a> -- Posted by 電装工芸 〔1366文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=724</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=724</guid>
	<category>tegalog</category>
	<pubDate>Sat, 16 Sep 2023 02:47:01 +0900</pubDate>
</item>

	<!-- END ENTRIES -->
</channel>
</rss>

