web-dev-qa-db-ja.com

3mシリアルタッチスクリーンのセットアップ

私はかなり長い間、Ubuntu 10.04で動作するシリアル3mタッチスクリーンを取得しようと試みてきました

私が必要とするものに私が見つけることができた最も近い投稿はこれでした: http://ubuntuforums.org/showthread.php?t=1508944&highlight=3m+touchscreen

幸いなことに、画面をタッチすると、マウスが右上隅にジャンプし、それで終わりです。キャリブレーションソフトウェアは実際には機能しません(3mからの直線)。起動しない場合もあれば、何か問題がある場合もあります。

編集
問題は、接続されたタッチスクリーンを認識しないキャリブレーションソフトウェアに関係しているようです。インストールスクリプトにいくつかの変更を加えると、キャリブレーションソフトウェアを正しくインストールすることができました。

#!/bin/bash
#
# Copyright 2007-2009 3M. All rights reserved.
#
# This script installs the MT7 touch screen driver
# During installation, all directories must be writeable.
#

# These symbols point to where the MT7 software binaries and data reside.
# The script attempts to detect where the installation kit is. If this
# fails, you need to set BinDir.
# The data directory must be on writeable media. The script normally uses
# the directory where the installation kit resides as the data directory.
# If you need the data directory to be elsewhere, set DataDir.
BinDir=""
DataDir=""

# If desired, define a file to contain driver startup options and set
# the TwDrv_Cfg symbol to the full path of the file. Normally this is
# not needed.
TwDrv_Cfg=""

# This symbol points to where the Java VM binaries reside.
JavaBinDir=""

# These symobls point to system and applictaion directories other than
# those specific to the MT7 software
UdevDir="/etc/udev"
HotplugDir="/etc/hotplug"
XorgDir="/usr/lib/xorg/modules/input"
XFree86Dir="/usr/X11R6/lib/modules/input"
LibDir="/usr/lib"
SEDir1="/usr/selinux/booleans"
SEDir2="/selinux/booleans"
LSBDir="/lib/lsb"

# The InitDir symbol points to where this script places an 'init' script.
# If left blank, this script first looks for /etc/init.d and then /etc/rc.d.
# If this is not appropriate or this script otherwise fails, set this value.
InitDir=""

# This symbol enables permission for some MT7 shared objects on
# SELinux systems. On most systems SEGivePermission is texrel_shlib_t.
# Change this variable if another security type is appropriate.
SEGivePermission="texrel_shlib_t"

# This symbol affects when the X input driver converts raw touch screen
# coordinates into screen coordiates. Normally, the X input driver reports
# the raw coordinates to the X server which then calls an conversion
# routine. Some versions of the X server expect the initial report to
# contain converted coordinates. If your touch behavior is off and
# calibration does not address the problem, set ConvertAtRead to true.
ConvertAtRead="false"

# This symbol defines the name of the xorg.conf file to generate if one is
# not found. Starting with X server version 1.5, this file is not
# automatically generated. This file is needed for MT 7 for Linux to work.
# If you want the file to reside elsewhere, set this symbol.
XorgConf="/etc/X11/xorg.conf"

# These symbols define where the 50MT7-xinit script needs to go and what
# suffix it requires. The script places this file automatically in
# /etc/X11/xinit/xinitrc.d and /etc/X11/Xsession.d without a suffix. If
# your distribution requires another location or requires a suffix on the
# file, set these symbols.
XinitDir=""
XinitSuffix=""

# Determine the installation directory
if [ -z $BinDir ]
then
   if [ $(echo $0 | grep ^/) ]
   then
      BinDir=$0
   else
      BinDir=$(echo $PWD"/"$0 | sed s#[.]/##)
   fi
   BinDir=$(echo $BinDir | sed s%/[^/]*$%%)
fi

# Determine if the system is compatible
$BinDir/TwCompat
if [ $? != 0 ]
then
   echo "ERROR: MT7 for Linux not installed - shared memory support not detected"
   exit
fi

# Determine the data directory
[ -z $DataDir ] && DataDir=$BinDir

# Create the data and fifo directories
if [ $DataDir != $BinDir ]
then
   [ -e $DataDir ] || mkdir $DataDir
   chmod a+w $DataDir
   ln -s $DataDir $BinDir/data
else
   [ -e $BinDir/data ] || mkdir $BinDir/data
fi
chmod a+w $BinDir/data
[ -e $BinDir/data/fifo ] || mkdir $BinDir/data/fifo
chmod a+w $BinDir/data/fifo

# Determine the init script directories
if [ -z $InitDir ] && [ -d /etc/init.d ]
then
   if [ $(ls -l /etc/init.d/ | sed -e /functions/d -e /^total\ [0-9]*$/d | wc -l) != 0 ]
   then
      InitDir="/etc/init.d"
   fi
fi
if [ -z $InitDir ]
then
   if [ -e /etc/rc.d/rc.local ]
   then
      InitDir=/etc/rc.d
   else
      InitDir=$BinDir
   fi
fi

# Install the init script
[ -e $InitDir/TWDrvStartup ] && rm -f $InitDir/TWDrvStartup
sed -e s#%BINDIR%#$BinDir#g \
    -e s#%INITDIR%#$InitDir#g \
    -e s#%LSBDIR%#$LSBDir#g \
    -e s#%TWDRV_CFG%#$TwDrv_Cfg#g $BinDir/TWDrvStartup.ORIG \
    >$InitDir/TWDrvStartup
chmod a+x $InitDir/TWDrvStartup
if Perl $BinDir/TwIsThere.Perl chkconfig
then
   chkconfig --add TWDrvStartup >/dev/null
Elif Perl $BinDir/TwIsThere.Perl update-rc.d
then
   update-rc.d TWDrvStartup defaults >/dev/null
Elif [ -e $InitDir/rc.local ]
then
   sed -e '$ a\
%INITDIR%/TWDrvStartup start
' $InitDir/rc.local >$InitDir/rc.local.TEMP
   rm -f $InitDir/rc.local
   sed -e s#%INITDIR%#$InitDir# $InitDir/rc.local.TEMP >$InitDir/rc.local
   rm -f $InitDir/rc.local.TEMP
   chmod +x $InitDir/rc.local
else
   echo "Cannot install the init script"
fi

# Test for USB support
if [ -z $(uname -r | grep ^2\.4\.) ]
then
   # Copy the udev rules script
   Hotplug=0
   if [ -d $UdevDir/rules.d ]
   then
      if [ -e $UdevDir/rules.d/99-TwDriver.rules ]
      then
         rm -f $UdevDir/rules.d/99-TwDriver.rules
      fi
      sed s#%BINDIR%#$BinDir#g $BinDir/99-TwDriver.rules.ORIG \
         >$UdevDir/rules.d/99-TwDriver.rules
      Hotplug=1
   fi
   if [ -d $HotplugDir/usb ] && [ -e $HotplugDir/usb.agent ]
   then
      [ -e $HotplugDir/usb/TwHotplug ] && rm -f $HotplugDir/usb/TwHotplug
      sed s#%BINDIR%#$BinDir#g $BinDir/TwHotplug.ORIG > $HotplugDir/usb/TwHotplug
      chmod a+x $HotplugDir/usb/TwHotplug
      [ -e $HotplugDir/usb.usermap ] || echo "# Created by MT7" >$HotplugDir/usb.usermap
      sed <$HotplugDir/usb.usermap >$HotplugDir/usb.usermap.TEMP '$ a\
# TwHotplug is for the MT7 for Linux software\
TwHotplug            0x0001      0x0596   0x0000    0x0000       0x0000      0x00         0x00            0x00            0x06            0x00               0x00               0x00000000
'
      rm -f $HotplugDir/usb.usermap
      mv $HotplugDir/usb.usermap.TEMP $HotplugDir/usb.usermap
      Hotplug=1
   fi
   if [ $Hotplug == 0 ]
   then
      echo "Hotplugging of USB touch screen controllers is not supported"
   fi
else
   echo "USB touch screen controllers are not supported under kernel 2.4"
fi

# Test for the version of C++ standard libraries
if [ -e $LibDir/libstdc++.so.6 ]
then
   CppExt="6"
Elif [ -e $LibDir/libstdc++.so.5 ]
then
   CppExt="5"
else
   echo "Cannot find needed libstdc++.so in $LibDir"
   CppExt=""
fi

# Link the libraries into /usr/lib
Perl $BinDir/TwLibInstall.Perl install $LibDir $BinDir/lib*.so
if [ x$CppExt != x ]
then
   Perl $BinDir/TwLibInstall.Perl install $LibDir $BinDir/so$CppExt/lib*.so
fi

# Link RnR sensitive files
if [ x$CppExt != x ]
then
   $BinDir/TwLibTest $LibDir/libTwSystemRnR12.so
   if [ x$? != x0 ]
   then
      rm -f $LibDir/libTwSystem.so
      ln -s $LibDir/libTwSystemRnR12.so $LibDir/libTwSystem.so
      ln -s $BinDir/TwMonitorRnR.bin$CppExt $BinDir/TwMonitor
   else
      $BinDir/TwLibTest $LibDir/libTwSystemRnR.so
      if [ x$? != x0 ]
      then
         rm -f $LibDir/libTwSystem.so
         ln -s $LibDir/libTwSystemRnR.so $LibDir/libTwSystem.so
         ln -s $BinDir/TwMonitorRnR.bin$CppExt $BinDir/TwMonitor
      else
         ln -s $BinDir/TwMonitor.bin$CppExt $BinDir/TwMonitor
      fi
   fi
fi

# Copy the X input driver
XCopyDefault=0
if [ -d $XorgDir ]
then
   XDir=$XorgDir
   if [ -z "$(X -version 2>&1 | grep X\.Org[^1]*1\.[4-9]\.)" ]
   then
      XSrc=$BinDir/twxinput_drv.so
   Elif [ -z "$(X -version 2>&1 | grep X\.Org[^1]*1\.[5-9]\.)" ]
   then
      XSrc=$BinDir/twxinput_drv.so.1.4
   else
      XSrc=$BinDir/twxinput_drv.so.1.5.1
      XCopyDefault=1
   fi
Elif [ -d $XFree86Dir ]
then
   XDir=$XFree86Dir
   XSrc=$BinDir/twxinput_drv.so
else
   XDir=""
   echo "Cannot install the X input module"
fi
if [ -d $XDir ]
then
   [ -e $XDir/twxinput_drv.o ] && rm -f $XDir/twxinput_drv.o
   [ -e $XDir/twxinput_drv.so ] && rm -f $XDir/twxinput_drv.so
   ln -s $XSrc $XDir/twxinput_drv.so
fi

# Install the xinit scripts
if [ -d /etc/X11/xinit/xinitrc.d ]
then
   sed s#%BINDIR%#$BinDir#g $BinDir/50MT7-xinit.ORIG \
      >/etc/X11/xinit/xinitrc.d/50MT7-xinit$XinitSuffix
   chmod a+x /etc/X11/xinit/xinitrc.d/50MT7-xinit$XinitSuffix
fi
if [ -d /etc/X11/Xsession.d ]
then
   sed s#%BINDIR%#$BinDir#g $BinDir/50MT7-xinit.ORIG \
      >/etc/X11/Xsession.d/50MT7-xinit$XinitSuffix
   chmod a+x /etc/X11/Xsession.d/50MT7-xinit$XinitSuffix
fi
if [ x$XinitDir != x ]
then
   sed s#%BINDIR%#$BinDir#g $BinDir/50MT7-xinit.ORIG \
      >$XinitDir/50MT7-xinit$XinitSuffix
   chmod a+x $XinitDir/50MT7-xinit$XinitSuffix
fi

# Set up the SELinux security types
if [ -d $SEDir1 ]
then
   SEDir=$SEDir1
Elif [ -d $SEDir2 ]
then
   SEDir=$SEDir2
else
   SEDir=""
fi
if [ x$SEDir != x ]
then
   chcon -t $SEGivePermission $LibDir/libTwSystem.so
   chcon -t $SEGivePermission $LibDir/libTwConfig.so
   chcon -t $SEGivePermission $LibDir/libTwIO_Utilities.so
   chcon -t $SEGivePermission $LibDir/libTwAppIO_JNI.so
   chcon -t $SEGivePermission $LibDir/libTwCommon_JNI.so
   chcon -t $SEGivePermission $LibDir/libTwConfig_JNI.so
   chcon -t $SEGivePermission $LibDir/libTwUI_JNI.so
   chcon -t $SEGivePermission $LibDir/libTwUICP.so
   [ -e $XDir/twxinput_drv.so ] && chcon -t $SEGivePermission $XDir/twxinput_drv.so
fi

# Set up the configuration
[ -d /dev/shm ] && rm -f /dev/shm/*TwConfig*
sed s#%BINDIR%#$BinDir#g $BinDir/TwFramework.cfg.ORIG >$BinDir/TwFramework.cfg
$BinDir/TwCfgUtil /u $BinDir/TwFramework.cfg
$BinDir/TwCfgUtil /u $BinDir/TwFactory.cfg

# Produce the Remove script
sed -e s#%BINDIR%#$BinDir#g \
    -e s#%UDEVDIR%#$UdevDir#g \
    -e s#%XDIR%#$XDir#g \
    -e s#%LIBDIR%#$LibDir#g \
    -e s#%SEDIR%#$SEDir#g \
    -e s#%HOTPLUGDIR%#$HotplugDir#g \
    -e s#%INITDIR%#$InitDir#g \
    -e s#%XINITDIR%#$XinitDir#g \
    -e s#%XINITSUFFIX%#$XinitSuffix#g \
    $BinDir/Remove.ORIG >$BinDir/Remove

# Produce the X input script
sed -e s#%CONVERT%#$ConvertAtRead#g \
    $BinDir/TWXinputInstall.Perl.ORIG >$BinDir/TWXinputInstall.Perl

# Produce the CP start script
sed -e s#%JAVABINDIR%#$JavaBinDir#g \
    -e s#%BINDIR%#$BinDir# \
    $BinDir/StartCP.ORIG >$BinDir/StartCP

# Set any necessary permissions
chmod a+x $BinDir/TwCalib
chmod a+x $BinDir/TWXinputInstall.Perl
chmod u+x $BinDir/Remove
chmod a+x $BinDir/StartCP

# Copy the default xorg.conf
if [ $XCopyDefault == 1 ]
then
   $BinDir/TWXinputInstall.Perl -find
   if [ $? == 1 ]
   then
      cp -a xorg.conf.ORIG $XorgConf
   fi
fi

通常、このエラーは出力されますが、エラーは重大ではないと思います(警告?)

update-rc.d: warning: /etc/init.d/TWDrvStartup missing LSB keyword 'required-start'

update-rc.d: warning: /etc/init.d/TWDrvStartup missing LSB keyword 'required-stop'

update-rc.d: warning: TWDrvStartup start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (2 5)
update-rc.d: warning: TWDrvStartup stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (0 1 3 4 6)
ln: creating symbolic link `/home/kioskadmin/Desktop/twscreen/TwMonitor': File exists
root@kiosk1:/home/kioskadmin/Desktop/twscreen# 

また、かなり前にスーパーユーザーに この質問 を尋ねましたが、ubuntuフォーラムへのリンク以外には何もありませんでした。そして、Ubuntu上の誰もIRC=は同じ投稿を指す以上に非常に役に立ちませんでした。多くの人々があまり知らない専門家のもののタッチスクリーンがオンになっているようです。

だから私の質問

1これを正しく機能させるためのヒントはありますか?私の主な問題は、10.04の新しいブートプロセスのようです

2動作する可能性のある、または試す価値のある代替のキャリブレーションソフトウェアまたはタッチスクリーンドライバーはありますか? (USBではなくシリアル)。

ドライバが正しく起動していないようです。何らかの理由で、キャリブレーションソフトウェアとコントロールパネルがコントローラを検出していません。現時点での私の仮定は、initスクリプトが正しくないということです...おそらくUbuntuの起動プロセスの変更が原因です

編集:

コントロールパネルのスクリプトを正しく実行できるようになったようです。Javaで問題が発生していましたが、別の方法で削除しなければなりませんでした。 、すべてが実行されますが、接続されていても見つけることができず、手動で画面を有効にすると応答します。

エラーは、「タッチスクリーン1が存在しません」...です。

(また、タッチスクリーンタグがあるようです)

5
WalterJ89

マーベリックで、このPPAを追加して試してください

ppa:utouch-team/utouch

1
akshatj

UbuntuのMultiTouchのヘルプを参照するには、こちらをご覧ください: https://wiki.ubuntu.com/Multitouch#Community%20Help

そこで質問するときは、lsusbの結果を必ず含めてください。ありがとうございました!

ただし、デバイスドライバーを適切に構成するにはこれでは不十分な場合があります。バグを報告することをお勧めします。

1
MagicFab

/opt/twscreen/Remove 脚本。

/opt/twscreen/TWDrvStartup.ORIGファイルし、BEGIN INIT INFO次のようになります。

### BEGIN INIT INFO
# Provides: TwDriver
# Required-Start:
# Required-Stop:
# Default-Start: 2 5
# Default-Stop: 0 1 3 4 6
# Description: Start the MT 7 touch screen driver
### END INIT INFO

/opt/twscreen/Install

0
Malan