on the DLL

How can I get the MSVBVM50. DLL to work under vista I have games he needs but vista did not

Hi crafty6,

You can run a SFC scan, it will restore corrupt or missing files on your computer. Please follow the steps below to run a SFC scan:

1. Click Start, in the Start bar search type cmd and press ENTER.

2. If you get a quick click, the user account control continue.

3. at the command prompt, type sfc/scannow, and then press ENTER.

Insert the disc of windows Vista if it prompts for a disk.

You can also use the link below to download manually:

http://support.Microsoft.com/kb/q180071/

I hope this information is useful.

Please let us know if you need further assistance.

Concerning

Rehman - Microsoft Support

Tags: Windows

Similar Questions

  • The application or the DLL C:\Program Files\Mozilla Firefox\MOZCRT19.dll is not a valid Windows image. Please check this against your installation diskette

    The application or the DLL C:\Program Files\Mozilla Firefox\MOZCRT19.dll is not a valid Windows image. Please check this against your installation diskette.
    Help, please. I was unistalling firefox and reinstall them again at least 10 times, but still does not solve the problem

    This has happened

    Each time Firefox opened

    few days back

    User Agent

    Mozilla/4.0 (compatible; INTERNET EXPLORER 6.0; Windows NT 5.1; SV1; InfoPath.2)

    I have the same problem

    deleted expletives - Maurane

  • The DLL call fails when DLL uses a wide range

    I call a C++ dll in LabVIEW 32-bit on Windows 7. I kept getting error 1097 and finally understood it is because the dll uses two large paintings of 5 MB each. The tables are initialized in the constructor of an object, malloc is not used, or whatever it is. If I do the smaller berries, then everything works fine.

    The problem is not difficult to work around, now that I know what is the cause, but can someone tell me why a dll using a lot of memory would be a problem? I feel that 10 MB is really a lot of memory to use on modern computers.

    OK, you can test the appeal of the DLL in a Visual Studio test harness?

    In addition, in case you haven't seen another 'DLL error 1097' son type, here are a few. The cause of 1097 in your case can be illuminated by a multitude of courses of troubleshooting:

    Call dll error 1097

    Error code coming 1097 in DLL call

    error 1097 after the call dll function that allocates memory inside

    1097 error in the transition from table from C++ DLL for LabView (seems very relevant, although long)

    I know there are a lot of reading, but there is a good chance that the magic trick is in one of these threads already. We will ride on the shoulders of their work.

  • Adapter DLL: Name of the function change & params without unloading of the DLL

    Hello

    I use teststand adapters API to dynamically build a DLL call step. Each dll function is called through this subsequence "DLL Manager."

    Tried 2 methods (here is a summary of the code):

    1 ActiveX as follows:

    CommonCModule.ModulePath = myDllpath

    CommonCModule.FunctionName = myFunc (Note: this call unload the DLL previously loaded)

    Module-> LoadPrototype

    (to set the params)

    2 steps statement:

    RunState.Sequence.Main ["Call DLL function']. TS. SData.Call.LibPath = myDllpath

    RunState.Sequence.Main ["Call DLL function']. TS. SData.Call.Func = myFunc (Note: this is a step, but the info seems not be updated-online the new feature is called not properly)

    Module-> LoadPrototype

    (to set the params)

    The two methods is exactly the same behavior, but good for the 1st function I call a work or if I dump the dll after the execute step.

    However, is there a way to use these steps (or other) at stage configuration, but without unloading the DLL between each call. In my test sequence, I must OpenConnection with the object to be measured before starting my orders, as well as the dll should not be discharged to keep the connection open...

    for example

    (1) OpenConnection()-online this function takes the handle of communication with the device

    (2) myCommand1()

    (3) myCommand2()

    (4) CloseConnection()

    Thank you for the help

    C.

    If I understand your question, there are several ways to solve the problem. The easiest is to place a call to the dll before your loop that you never change programmatically. This step will then keep the loaded dll (if any stage that uses a dll is loaded, then the dll remains loaded. A dll is unloaded when all the steps that use it are unloaded.). Another option is to have just internally your call to the dll LoadLibrary on itself so that it is never unloaded. You then leave the process to unload the dll well. Another option is to add the code directly to the sequence that explicitly, charge and discharge your dll with the Win32 API LoadLibrary and FreeLibrary.

    That said, what you describe, if I understand correctly, looks like a very unusual use of TestStand. Looks like you use TestStand as a dll calling rather than as a sequencer and write your own sequencer above it instead. Have you thought to generate an entire sequence to run in teststand, rather than a step at a time? Basically, convert your test script in a TestStand sequence.

    Hope this helps,

    -Doug

  • Nidll.TLC, was eliminated for the dll system RT?

    I am currently trying to call some model (*.mdl) in LabVIEW to transform the models of the dll.  The models are manufactured and converted with Mathworks Simulink and LabVIEW I intend to open via call library function node of the dll.  So far, I've downloaded NI Veristand and the model Interface Toolkit, which gave me options of file system target:

    NIVeristand.tlc

    NIVeristand_VxWorks.tlc

    But I don't have an option for nidll.tlc (I understand can be opend in LabVIEW Veristand instead), and I wonder why.  This option has been removed for RT targets?

    Hi Abe,

    Yes, nidll.tlc is obsolete as of 2012. In particular, nidll.tlc has been installed by the NI LabVIEW Simulation Interface Toolkit (SIT) which reached its end of life in 2012. SIT, however, was replaced by the model Interface Toolkit LabVIEW; This kit replaces nidll.tlc by NIVeriStand.tlc. Note that the interface of the model generated by nidll.tlc and NIVeriStand.tlc are very similar; Indeed, nidll.tlc was the NIVeriStand.tlc Foundation. A model generated by NIVeriStand.tlc can be opened in LabVIEW VeriStand.

  • LabVIEW MoveBlock and obtaining of a string from a DLL (assigned by the DLL)

    Hello classmates addicted LabVIEW,.

    I have a small question about the LabVIEW MoveBlock function.

    For a project I need to use an external DLL that must be called by my LabVIEW program.

    Essentially, the DLL returns a void * to a buffer and the size of the buffer (size_t). This stamp is just the string being returned by the DLL data. The DLL allocates these data and later in the program that I need to pass this pointer to a second function of the DLL to explicitly inform the DLL that I made using the data, so it can release these data.

    Here is the documentation for the function I want to use:

    Since you say the works of XNode, then you're dealing with a pointer and not a handle (pointer to a pointer), so you should be to pass the address of MoveBlock by value and not as a pointer to a value.

  • LabVIEW crashes after the call to the DLL

    Hi all

    I'm working on writing a wrapper for a dll. The call to the dll works fine a returns the appropriate values, but as soon as I close the VI dev LabVIEW environment crashes. Any help to avoid the same. I've been through a lot of posts and I tried varying the types of data sent to the dll, but again it gets crashed.

    the dll function that I use is the prototype (with the calling convention of type C)

    int nomfonction (Struct * cfg, UCHAR dNumber, UCHAR hTYPE)

    The varables UCHAR I'm passing as of 8-bit unsigned integers.

    For the structure, I did a cluster and pass with adapted to the Type and handles.

    The DLL is running very well and the VI stops, too, but as soon as I try to close the dev environment VI crashes. Help, please.

    Thank you.

    It is always possible that there is a bug in your DLL, or you're a failure calling a function in the DLL that is required in order to properly clean. The problem is perhaps not the way you have set up the call library function node.

    If you post: your VI; the header file that defines the structure of the cfg and the function prototype; and all the documentation on the function, so we can tell you if it is properly configured. Without this information there is little we can do.

  • the pointer to int as a parameter in the dll, but the value of parameter variation doesnot

    Hello, I have a function in the dll as void set(int * a) {(* a) = 99 ;}}

    And I connect an int32 to the dll. But when I run the vi, the Int32 value does not change.

    As the picture below:

    You connected control DLL parameter. This means that the value of the command is passed to the DLL... and finito! You must connect an indicator on the right side of the DLL parameter to see the value returned by the DLL.

  • How to change the .h to correctly practice the .dll

    Hello world

    I have a problem with a .h file to control my cnc-planet engine.

    I don't know how to edit.

    For example, I have the following function not recognized by Labview:

    extern "C" CNC_ERROR CALLCONV Connect();

    I tried with: int Connect(); Int32 Connect(); int CNC_ERROR Connect() and int32 CNC_ERROR Connect() with no result.

    Perhaps, it's the statement variable...

    It is written as follows:

    enum CNC_ERROR: int
    {
    CNC_SUCCESS = 0 X 00000000.
    CNC_ERROR_FAIL = 0 X 00000001,
    CNC_ERROR_NOT_IMPLEMENTED = 0 X 00000002,
    CNC_ERROR_NOT_INITIALIZED = 0 X 00000003,
    CNC_ERROR_DEVICE_NOT_FOUND = 0 X 00000004,
    CNC_ERROR_DEVICE_NOT_READY = 0 X 00000005,
    CNC_ERROR_DEVICE_NOT_CONNECTED = 0 X 00000006,
    CNC_ERROR_SEND_FAILED = 0 X 00000007,
    CNC_ERROR_LICENSE = 0 X 00000008,
    CNC_ERROR_RAWDATA = 0 X 00000009,
    CNC_ERROR_DEVICE_PARAMS = 0X0000000A,
    };

    I don't know how to change in a way that undrestand Labview...

    Any help?

    Thank you very much.

    PS: The integral .h file

    #pragma once

    #ifndef __AFXWIN_H__
    #error include 'stdafx.h' before including this file for PCH
    #endif

    enum CNC_ERROR: int
    {
    CNC_SUCCESS = 0 X 00000000.
    CNC_ERROR_FAIL = 0 X 00000001,
    CNC_ERROR_NOT_IMPLEMENTED = 0 X 00000002,
    CNC_ERROR_NOT_INITIALIZED = 0 X 00000003,
    CNC_ERROR_DEVICE_NOT_FOUND = 0 X 00000004,
    CNC_ERROR_DEVICE_NOT_READY = 0 X 00000005,
    CNC_ERROR_DEVICE_NOT_CONNECTED = 0 X 00000006,
    CNC_ERROR_SEND_FAILED = 0 X 00000007,
    CNC_ERROR_LICENSE = 0 X 00000008,
    CNC_ERROR_RAWDATA = 0 X 00000009,
    CNC_ERROR_DEVICE_PARAMS = 0X0000000A,
    };

    enum CNC_STATUS: int
    {
    CNC_STATUS_NONE = 0 X 00010000,
    CNC_STATUS_CONNECTED = 0 X 00010001,
    CNC_STATUS_DISCONNECTED = 0 X 00010002,
    CNC_STATUS_UNPLUGED = 0 X 00010003,
    CNC_STATUS_DATAERROR = 0 X 00010004,
    };

    enum CNC_CODE: unsigned char
    {
    CNC_CODE_Unknown = 0,
    CNC_CODE_OK = 1,
    CNC_CODE_Pos = 2,
    CNC_CODE_Stop = 3,
    CNC_CODE_Error = 8,
    };

    enum CNC_PLANE: unsigned char
    {
    CNC_PLANE_Unknown = 0,
    CNC_PLANE_XY = 1,
    CNC_PLANE_YZ = 2,
    CNC_PLANE_ZX = 3,
    CNC_PLANE_UV = 4,
    CNC_PLANE_VW = 5,
    CNC_PLANE_UW = 6,
    };

    enum CNC_SPINDLE: unsigned char
    {
    CNC_SPINDLE_Unknown = 0,
    CNC_SPINDLE_Stopped = 1,
    CNC_SPINDLE_CW = 2,
    CNC_SPINDLE_CCW = 3,
    };

    enum CNC_COOLANT: unsigned char
    {
    CNC_COOLANT_Unknown = 0,
    CNC_COOLANT_Off = 1,
    CNC_COOLANT_On = 2,
    };

    enum CNC_VERSION: unsigned char
    {
    CNC_VERSION_Unknown = 0,
    CNC_VERSION_MK1 = 1,
    CNC_VERSION_MK2 = 2,
    };

    #define CALLCONV __stdcall

    Reminder for the UBS state changes
    empty typedef (__stdcall TStatusCallback) (State CNC_STATUS);

    Reminder of the changes in the status of the drive
    (typedef) empty (__stdcall TDataCallback)
    Code CNC_CODE, //status
    unsigned char bufferFree //amount of free buffers - don't start a new order if it is less than 4
    int numExecuting, number of running command
    keysLimit unsigned char, unsigned char keysJog, //state of the limit and jog buttons
    Put int, int posC, int POSD, int posB //position of the four axes in steps
    unsigned char output);                    Exit status of the controller (flood, mist, axis)

    extern "C" CNC_ERROR CALLCONV (BSTR * result);
    HID
    extern "C" CNC_ERROR CALLCONV HidInitialize();
    extern "C" CNC_ERROR CALLCONV HidFinalize();
    extern "C" BOOL CheckHidInitialized() CALLCONV;
    extern "C" CNC_ERROR CALLCONV GetHidDeviceList(BSTR* deviceList);
    extern "C" CNC_ERROR CALLCONV GetHidDeviceInfo(int vid, int pid, BSTR* vendorName, BSTR* productName, BSTR* serialNumber);
    extern "C" CNC_ERROR CALLCONV GetHidDeviceInfoByName(BSTR device, BSTR* vendorName, BSTR* productName, BSTR* serialNumber);

    Controller of
    extern "C" CNC_ERROR CALLCONV Connect();
    extern "C" CNC_ERROR CALLCONV Disconnect();
    extern "C" BOOL CALLCONV IsConnected();
    extern "C" CNC_ERROR CALLCONV GetDeviceInfoEx(BSTR* vendorName, BSTR* productName,)
    BOOL * crafts, int * serialNumber.
    unsigned char * ver_year, unsigned char * ver_month, unsigned char * ver_day);
    extern "C" CNC_ERROR CALLCONV GetDeviceInfo(BSTR* vendorName, BSTR* productName, BOOL* diy);
    extern "C" CNC_ERROR CALLCONV RegisterStatusCallback(TStatusCallback *statusCallback);
    extern "C" CNC_ERROR CALLCONV RegisterDataCallback(TDataCallback *dataCallback);

    extern "C" CNC_ERROR CALLCONV GetState)
    CNC_CODE * code,.
    char * bufferFree,.
    int * numExecuting,.
    char * keysLimit, char * keysJog,
    int * posA, int * posB, int * posC, int * POSD.
    char * output);
    extern "C" CNC_ERROR CALLCONV SetDeviceParams)
    int axis1StepsPerMM, int axis2StepsPerMM, int axis3StepsPerMM, int axis4StepsPerMM,
    unsigned char axisLimitSwitch,
    Double axis1Backlash, double axis2Backlash, double axis3Backlash, double axis4Backlash.
    Double axis1Accel, double axis2Accel, double axis3Accel, double axis4Accel.
    (double axis1InitSpeed, double axis2InitSpeed, double axis3InitSpeed, double axis4InitSpeed);

    extern "C" CNC_ERROR CALLCONV CmdInfo(int* num);
    extern "C" CNC_ERROR CALLCONV CmdWrite(int* num);
    extern "C" CNC_ERROR CALLCONV CmdMoveAxes(int* num, double posA, double posB, double posC, double posD, double speed, BOOL startAccel, BOOL endAccel);
    extern "C" CNC_ERROR CALLCONV CmdMoveAxesDelta(int* num, double posDeltaA, double posDeltaB, double posDeltaC, double posDeltaD, double speed, BOOL startAccel, BOOL endAccel);
    extern "C" CNC_ERROR CALLCONV CmdPos(int* num, double posA, double posB, double posC, double posD);
    extern "C" CNC_ERROR CALLCONV CmdDwell(int* num, double seconds);
    extern "C" CNC_ERROR CALLCONV CmdEStop(int* num);
    extern "C" CNC_ERROR CALLCONV CmdStop(int* num);
    extern "C" CNC_ERROR CALLCONV CmdPause(int* num);
    extern "C" CNC_ERROR CALLCONV CmdPauseNow(int* num);
    extern "C" CNC_ERROR CALLCONV CmdResume(int* num);
    extern "C" CNC_ERROR CALLCONV CmdResumeNow(int* num);
    extern "C" CNC_ERROR CALLCONV CmdOut(int* num, unsigned char output);
    extern "C" CNC_ERROR CALLCONV CmdOutNow(int* num, unsigned char output);
    extern "C" CNC_ERROR CALLCONV CmdSpindle(int* num, CNC_SPINDLE direction, double speed);
    extern "C" CNC_ERROR CALLCONV CmdSpindleNow(int* num, CNC_SPINDLE direction, double speed);
    extern "C" CNC_ERROR CALLCONV CmdCoolant(int* num, CNC_COOLANT flood, CNC_COOLANT mist);
    extern "C" CNC_ERROR CALLCONV CmdCoolantNow(int* num, CNC_COOLANT flood, CNC_COOLANT mist);
    extern "C" CNC_ERROR CALLCONV CmdNothing(int* num);

    Hello

    Rather than edit the .h file, it is easier to use the dll call function to define exactly what are the arguments, and return the function.

    Thanks for your replies.

    M.

  • Get the DLL string (memory allocated for DLL)

    Hi, I'm aware there are a lot of discussions around this topic, but there are a lot of variations and I've never used before LabVIEW, and I seem to have a hard time at a very basic level, so I hope someone can help me with the below simple specific test case to put me on the right track before I pull my hair remaining.

    I've created a DLL with a single function "GenerateGreeting". When it is called, it allocates enough memory for the string "Hello World!" \0"at the pGreeting of pointer, copy this string to the pointer and sets the GreetingLength parameter to the number of allocated bytes (in the DLL in the end, I want to use, there is a DLL function to free the memory allocated for this way).

    I created a header file to go with the DLL containing the following line.

    extern __declspec(dllimport) int __stdcall GenerateGreeting(char* &pGreeting, int &GreetingLength);
    

    I then imported the LabVIEW file using the import Shared Library Wizard. That created a "generate Greeting.vi' and everything seems somewhat sensitive for me (although this does not mean a lot right now). When I run the vi, the ' GreetingLength on ' display correctly '13', the length of the string, but "pGreeting out" shows only three or four characters (which vary in each race), place of the string that is expected of junk.

    The pGreeting parameter is set to the 'String' type, the string "String pointer C" format, size currently Minimum of 4095. I think the problem is that the DLL wants to allocate memory for pGreeting; the caller is supposed to pass a unallocated pointer and let the DLL allocates memory for the string the right amount, but LabVIEW expected the DLL to write in its buffer préallouée. How to with LabVIEW? Most of the functions in the DLL in the end, I want to use work this way, so I hope that's possible. Or I have to rewrite all my DLL functions to use buffers allocated by the appellant?

    The vi , header and the DLL are atteched, tips appreciated. Edit - cannot attach the dll or the headers.

    tony_si wrote:

    extern __declspec(dllimport) int __stdcall GenerateGreeting(char* &pGreeting, int &GreetingLength);
    

    Although char * & pGreeting is actually a thing of C++ (no C compiler I know would accept it) and this basically means that the char pointer is passed as a reference. So, technically, it's a double referenced pointer, however nothing in C++ Specifies that reference parameters should be implemented as a pointer at the hardware level. So free to decide to use some other possible MECHANISM that takes the target CPU architecture support a C compiler constructor. However, for the C++ compilers, I know it's really just syntactic sugar and is implemented internally as a pointer.

    LabVIEW has no type of data that allows to configure this directly. You will have to configure it as a whole size pointer passed as a pointer value and then use a call MoveBlock() or the support VI GetValuePtr() to copy the data on the pointer in a string of LabVIEW.

    AND: You need to know how the DLL allocates the pointer so that you can deallocate it correctly after each call to this function. Otherwise you probably create a leak memory, since you say that the first 4 bytes in the returned buffer always change, this feature seems to assign to each run of a new buffer that you want to deallocate correctly. Unless the DLL uses a Windows such as HeapAlloc() API function for this, it should also export a function according to deallocate the buffer. Functions like malloc() and free() from the C runtime cannot always be applied in the same version between the caller and callee, so that calling free() by calling on a buffer that has been allocated with malloc() in the DLL may not work on the same segment of memory and result in undefined behavior.

  • Reminder of control not found in the DLL

    I write a DLL for use in TestStand using panels in a .uir file. Callbacks for controls are in the source file for the DLL. In another DLL function, I call LoadPanel to put the Panel in memory and I get an error saying: he cannot find the callback function to the controls on the Panel.

    I am at a loss as to why this is happening. The prototype of the function is in the header generated from the .uir file. This file is included in my DLL source file and callbacks for all controls are also in the DLL source file. Everything compiles fine, it fails at run time.

    Am I missing something here? I used the UI stuff in DLLs before and don't remember ever having this problem.

    I use CVI 7.1.1 and TestStand 3.1 (mandated by Government subscriber).


  • When I use the library function node call in real time, is loaded only once for all or load the DLL whenever it is called?

    When I use the library function node call in real time, is loaded only once for all or load the DLL every time when it is called?

    I have a critical application in real time, in which I use a piece of DLL function developed in C++.  It is ok?  Make sure any senior developer?

    Thank you in advance.

    The user interface thread is the thread that is used to update the user interface. It's slow. And it's supposed to be that way because humans are slow.

    The call library function node can be configured as this thread to use in the configuration for it dialog box. Please visit the LabVIEW documentation on how to do this.

  • Loading of a DLL on RT: Missing Export "DecodePointer" "Kernel32.dll" and 7 error when calling the DLL

    Hi, I recently changed to Visual Studio 2010 and Windows 7 64-bit.

    I have an existing Office RT system running RT 2009.  This system calls a DLL that I already built using Visual Studio .net 2003 and Windows XP.

    Since I've recompiled the DLL I get an error 7 file not found error when I call the RT DLL, even if I simply replaced the old DLL with a new one in the file system so the path has not changed.

    I also noticed that the message on the screen connected to the RT system during startup:

    "achieveworldpeace.dll" load error: lack of export 'DecodePointer' of ' Kernel32.dll'.

    Any ideas on this problem?  It is perhaps as simple as a switch in the compiler?

    Thank you.

    I'm not sure it's a simple switch in the project settings in Visual C. The problem is clearly in the standard C runtime library that gets linked to your DLL and refers to exports of Windows which are not available on the RT system. Don't forget that the RT system is a limited Win32 API emulation.

    I usually avoid these problems using Visual C 6 to create DLLs for LabVIEW projects. The standard library of the C runtimes will not know what Windows API reference more recent exports because they have supported even under Win95. So unless your explicitedly reference code not supported RT APIs you wouldn't have problems. If you do not use the standard C file i/o functions and management of memory in your DLL functions, you can also try to link statically C runtime libraries in your DLL, or vice versa depending on what you have now. It may or may not work. Otherwise there is not much else but by using an earlier version of Visual Studio.

  • Insert the .dll file Ocean Optics Jaz

    Hello

    I want to use the package of spam (Ocean Optics) in Labview 2009. But I have no idea how use the .dll file in Labview. I already found tools > import > shared library.

    Insert the SPAM32. DLL file. But in the same menu, you must also insert a header file. But where can I found it? Or I do something wrong?

    Could someone help me with this?

    Stephan

    Finally I found the answer

  • Problem setting up base appeal of the DLL (win32 API?) for the control of coherent laser Verdi-G

    I'm trying to set up a call to the DLL to control a coherent laser Verdi-G.

    I can't know the right way to set up calls. In the attached Demo.cpp, there is a function "RunTests". It's kinda my final goal. Functions send some commands to query the device. I'm going to need to send commands like this (along with several others, some of which take arguments... but I think I can understand that on mine)

    My problem is getting started. I can't even talk about the device. I tried a few different ways to set up the call to the DLL, but they have always will plant the computer. I don't know if I am missing a few parts such as the initialization of a method to speak via USB or other parts.

    I added my own .vi tries as well as some of the .c, the .cpp & the .h files associated provided with laser control software. I may have missed the relevant records; I'm happy to add them if someone sees a necessary file / referenced.

    Any help would be appreciated.

    Thanks for your time!

    Turns out I missed the included .vi which belongs to install them the package. I was looking directly on their CD.

    I would mark this closed if I saw a button for this?

  • Have we not convert the dll too if we convert vi to the old version

    Hi all

    I get an error of a VI that I converted to an earlier version of 2014 LV---> LV 6, if I open the Vi in BT 6, I can't start it because it gives me error that "VI is not executable.

    This VI is a Thorlab FW102c filter wheel (which uses UART.dll).

    (I am trying to replace the wheel filter on a new work on my old system that uses windows xp and LV 6)

    The Vi contalns a dll, it has a wire cut (I can't sign the dll or browse the function palette and locate the dll), which I can not connect in LV 6.

    Is someone can tell me, what can be the problem?

    Attached in my vi and the dll.

    The error in LV 6 on Windows xp. (the program and the filter wheel works well on Windows 7)

    You can check if Thorlabs has a driver that will focus on the old version.

    You can also watch to see which means that there is communication between the screws in LV6.  It might be easier to get just two diff talk systems.

    Whatever it is, you have to invest resources.  It would make sense to invest in something more forward thinking.

Maybe you are looking for